Я пытаюсь создать приложение для заметок, где вы можете нажимать на изображения, а также редактировать текст в обычном режиме.
В настоящее время я разместил распознаватель жестов касания над UITextView, который вызывает:
@IBAction func onImageTap(_ sender: UITapGestureRecognizer) {
if sender.state == .ended {
let textView = sender.view as! UITextView
let layoutManager = textView.layoutManager
// location of tap in textView coordinates
var location = sender.location(in: textView)
location.x -= textView.textContainerInset.left;
location.y -= textView.textContainerInset.top;
// character index at tap location
let characterIndex = layoutManager.characterIndex(for: location, in: textView.textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
// if index is valid
if characterIndex < textView.textStorage.length {
// check if the tap location has the image attribute
let attributeValue = textView.attributedText.attribute(NSAttributedString.Key.fileType, at: characterIndex, effectiveRange: nil) as? String
// if location does have custom attribute, extract the url of the PDF and perform segue to display PDF
if let value = attributeValue {
if value == "PDF" {
storedFileName = textView.attributedText.attribute(NSAttributedString.Key.fileName, at: characterIndex, effectiveRange: nil) as? String
performSegue(withIdentifier: "displayPDF", sender: textView)
}
} else {
textView.isEditable = true
textView.becomeFirstResponder()
}
}
}
}
Это делает все изображения активируемыми. Тем не менее, я перестаю быть в состоянии щелкнуть где-нибудь еще в UITextView для редактирования текста.
Что я делаю, чтобы изображения оставались интерактивными, но, если я щелкаю где-нибудь еще в UITextView, я я могу начать редактирование текста?