У меня есть один текст (ASTextNode)
let contentNode = ASTextNode()
contentNode.maximumNumberOfLines = 7
contentNode.truncationMode = .byTruncatingTail
contentNode.isUserInteractionEnabled = true
contentNode.delegate = self
и в contentNode есть ссылка
Я настраиваю touchUpInSide для contentNode
contentNode.addTarget(self, action: #selector(contentNodeTapped), forControlEvents: .touchUpInside)
@objc func contentNodeTapped() {
if contentNode.maximumNumberOfLines == 7 {
contentNode.maximumNumberOfLines = 0
} else {
contentNode.maximumNumberOfLines = 7
}
UIView.animate(withDuration: 0.2, delay: 0, options: [UIView.AnimationOptions.layoutSubviews], animations: {
self.contentNode.setNeedsLayout()
self.contentNode.layoutIfNeeded()
}, completion: nil)
}
func textNode(_ textNode: ASTextNode!, tappedLinkAttribute attribute: String!, value: Any!, at point: CGPoint, textRange: NSRange) {
guard let url = value as? URL else { return }
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
, когда я нажимаю на contentNode iхочу изменить maximumNumberOfLines, чтобы увидеть весь текст, но это не гладко.Я просто пробую UIView.animate, но это не влияет.
И когда я коснулся ссылки в contentNode, он не вызывает обе функции: contentNodeTapped
и tappedLinkAttribute
.
Как и когдавызов только по нажатой ссылке tappedLinkAttribute
.
Текст после нажатия