2017-10-13 95 views
4

因此,當用戶與URL鏈接進行交互時,我在UItextview中遇到崩潰。所有的崩潰報告只有iOS版本11。 這看起來像著名的bug的iOS 9,但沒有一個統一的報告低於11的iOS版本,以及在報告中我發現有趣行:UITextView startInteractionWithLinkAtPoint崩潰iOS 11 only

UITextGestureClusterLinkInteract smallDelayRecognizer: 

裏面傳來與iOS 11(http://developer.limneos.net/?ios=11.0&framework=UIKit.framework&header=UITextGestureClusterLinkInteract.h)。 反正現在我有

@available(iOS 10.0, *) 
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { 
    UIApplication.shared.openURL(URL) 
    return false 
} 

這是不是很爽,因爲你失去的動作片菜單固定它。 我的假設是,它是由3D觸摸造成的(就像以前版本中的長按一樣),但是如果我檢測到3D觸摸(75%,甚至是最大力的50%)並禁用此特定手勢的鏈接交互 - 問題仍然存在出現。 有沒有人有這方面的經驗來解決這個問題和更優雅的方式?

+0

同樣的問題在這裏。如果你已經解決了,請通知我 –

回答

0

我經歷並解決了這個問題。

這是我的生產代碼中的解決方法。由於崩潰而禁用交互.preview狀態僅此狀態發生。

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { 
    switch interaction { 
    case .presentActions, .invokeDefaultAction: 
     return handleLinkURL(url: URL) 
    case .preview: 
     return false 
    } 
}