2017-01-20 7 views
0

Я столкнулся с странным сбоем при длительном нажатии, а затем нажав ссылку внутри UITextView. Ниже приведен мой код для обработки события касания по ссылке.Ошибка при длинном нажатии ссылки внутри UITextView

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool { 
    let termsAndConditions : TRTermsAndConditionsViewController = TRTermsAndConditionsViewController(nibName: "TRTermsAndConditionsViewController", bundle: nil) 
    let navigationtermsAndConditions = TRBaseNavigationViewController(rootViewController: termsAndConditions) 
    self.present(navigationtermsAndConditions, animated: true, completion: nil) 
    return false 
} 

Я получаю ниже ошибки:

*** Assertion failure in -[TRADFRI.TRTextViewNonEditable startInteractionWithLinkAtPoint:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.29.5/UITextView_LinkInteraction.m:377 

Я гугле много и прошли через эти ссылки, а link1link2, но не получил никакого успеха. Я пробовал решение, данное «Сухробом» и «ryanphillipthomas» по ссылке1, и решение, данное «nate.m» и «chrismorris» по ссылке2. Более странно то, что я получаю этот крах на устройствах, поддерживающих 3D-touch, такие как iPhone 6S, iPhone 6S Plus (с iOS 9 или выше). Может кто-нибудь помочь мне в этом вопросе.

+0

В соответствии с предоставленной ссылкой это ошибка iOS9 (nad 10?). Он также обеспечивает обходное решение. Вы пробовали это, и это не сработало для вас? В этом случае, возможно, отредактируйте вопрос с тем, что вы на самом деле попробовали и что не работает. – shallowThought

ответ

0

Наконец я решил эту проблему, получив некоторую помощь от этого link

Так я удалил атрибут ссылки из NSAttributedString и использовать только подчеркивание атрибута. Используя жест нажатия, я обнаруживаю индекс символа, на который пользователь нажимает, и если этот индекс лежит в моем диапазоне гиперссылок, я открываю URL-адрес.