2016-12-07 7 views
0

Я использую WebKit с WKWebView, и я пытаюсь перехватить , который представлен после долгого нажатия на ссылку.Использование незаявленного типа 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? Нет доступа к этому классу?

Как я могу определить, является ли viewControllerToPresentWKActionSheet чистым способом? На данный момент я использую 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) 
} 

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

  • Нет связанных вопросов^_^