2016-01-20 1 views
2

Я не могу открыть NSURL внутри UITextView с Доступность включена. (Работает нормально при выключении)не в состоянии открыть NSURL внутри UITextView (Приписываемые текст), когда Доступность ON

I приписали текст внутри UITextView, который содержит некоторую строку и некоторые NSURL.

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

Пожалуйста, дайте мне знать, если требуется дополнительное разъяснение.

P.S. Я уже использовал UITapGesture, но не смог.

CGPoint tapLocation = [tapGesture locationOfTouch:0 inView:textView]; 
UITextPosition *textPosition = [textView closestPositionToPoint:tapLocation]; 
NSDictionary *attributes = [textView textStylingAtPosition:textPosition inDirection:UITextStorageDirectionForward]; 

NSURL *url = attributes[NSLinkAttributeName]; 

Это TextPosition не прав, когда доступность включен.

Благодаря

+1

Жест коснулось менее вероятного использования человеком, имеющим доступность. вы активировали ссылку, чтобы работать, если пользователь просматривает текст и двойные краны? ссылается ли ссылка на ссылку в озвучке? – Wain

+0

Да, это говорит о себе как о связи. Еще одно, это решение отлично работает в симуляторе. –

+0

Если его описание как ссылки, а не щелчка вверх или вниз фокус, немедленно переходит к ссылке, и пользовательские двойные ответвления и действие будут активированы, что в основном является делегатом вашего UITextView. – IOSCODER

ответ

2

Вы можете обнаружить ссылки, делая возможным UITextView dataDetectorTypes.

let yourString = "<html><body><p>Hi Nipun. <a href= http://www.google.com>Visit Google</a></p></body></html>" 

    do{ 
     let attr = try NSAttributedString(data: yourString.dataUsingEncoding(NSUTF16StringEncoding)!, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType], documentAttributes: nil) 
     myTextView.attributedText = attr 

    }catch{ 

    } 

    myTextView.delegate = self 
    myTextView.editable = false 
    myTextView.tintColor = UIColor.redColor() 
    myTextView.dataDetectorTypes = UIDataDetectorTypes.Link 

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool { 
    /* 
    let s = URL.absoluteString 

    let text2 = s.stringByReplacingOccurrencesOfString("%20", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil) 

    print(text2) 

    myWebView.loadRequest(NSURLRequest(URL: URL)) 
    */ 
    return true // Return False if you want to load URL in webview else it will redirect to Safari 
} 

Надеюсь, он вам поможет.

+0

shouldInteractWithURL не вызывается, когда доступность включена. –

+0

@NipunArora Если вы проведите пальцем по экрану или проведите пальцем вниз, он приведет вас к ссылке, чем вы можете дважды коснуться, и ваш метод должен быть вызванInteractWithURL. – IOSCODER

+0

@IOSCODER, прокручивание вверх/вниз происходит по ссылке, но двойное нажатие не вызывает 'shouldInteractWithURL', ничего не происходит? – Saif

Смежные вопросы