2016-12-07 79 views
0

我正在使用WebKitWKWebView,並且我試圖截取長按鏈接後顯示的WKActionSheet使用未聲明的類型WKActionSheet

在我的根視圖控制器,我實現了present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil)

override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) { 

    print("View controller to present: \(viewControllerToPresent)") 

    super.present(viewControllerToPresent, animated: flag, completion: completion) 
} 

當我長按一個鏈接,我可以看到相關的日誌中我的控制檯:

View controller to present: <WKActionSheet: 0x13616b200>

但如果我試圖檢查是否或viewControllerToPresentWKActionSheet,然後我得到這個錯誤信息:

Use of undeclared type WKActionSheet

所以我猜...這WKActionSheet屬於一個私人API?沒有辦法訪問該課程?

我怎麼能確定是否viewControllerToPresent是一個WKActionSheet以乾淨的方式?現在,我使用viewControllerToPresent.description,並檢查它是否包含字符串「WKActionSheet」;沒關係,但很骯髒......

回答

0

如果有人有興趣,這裏是我現在的解決方法。

override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) 
{ 
    guard let alertController = viewControllerToPresent as? UIAlertController, 
     alertController.preferredStyle == .actionSheet, alertController.description.contains("WKActionSheet") 
     else { 
      super.present(viewControllerToPresent, animated: flag, completion: completion) 
      return 
    } 

    guard let longPressedLink = alertController.title 
     else {return} 

    // Here I call a custom method to create my own UIAlertController 
    let customAlertController = getCustomAlertControllerFromLink(link: longPressedLink) 
    super.present(customAlertController, animated: flag, completion: completion) 
} 
相關問題