2014-10-08 66 views
2

我看到一些關於這個問題的文章,但仍然沒有得到它。如何從自定義鍵盤擴展中啓動包含應用程序?

我設置了包含應用程序的URLidentifier - KbrdApp。如果我的包含應用程序啓動它返回標誌'1',這意味着'準備好'。

這是從viewDidLoad稱爲定製鍵盤擴展代碼:

UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
NSString *customURL = @"KbrdApp://"; 
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:customURL]]; 
[webView loadRequest:request]; 

我已閱讀,NSExtensionContext只能與今天的擴展,所以我嘗試UIWebView。但它不起作用。

有什麼不對?

+0

,如果你得到了答案,那麼請發表您的代碼...我有同樣的問題...謝謝 – 2015-10-05 05:32:43

回答

1

問題中提到的方法在iOS 8.0中工作。

當前(iOS 9.2),您可以使用多種方式訪問​​共享的UIApplication實例及其隱藏的openURL方法。

就個人而言,我更喜歡這種方法女巫我已經開發:

// Usage: 
// UIApplication.sharedApplication().openURL(NSURL(string: "your-app-scheme://")!) 

extension UIApplication { 

    public static func sharedApplication() -> UIApplication { 
     guard UIApplication.respondsToSelector("sharedApplication") else { 
      fatalError("UIApplication.sharedKeyboardApplication(): `UIApplication` does not respond to selector `sharedApplication`.") 
     } 

     guard let unmanagedSharedApplication = UIApplication.performSelector("sharedApplication") else { 
      fatalError("UIApplication.sharedKeyboardApplication(): `UIApplication.sharedApplication()` returned `nil`.") 
     } 

     guard let sharedApplication = unmanagedSharedApplication.takeUnretainedValue() as? UIApplication else { 
      fatalError("UIApplication.sharedKeyboardApplication(): `UIApplication.sharedApplication()` returned not `UIApplication` instance.") 
     } 

     return sharedApplication 
    } 

    public func openURL(url: NSURL) -> Bool { 
     return self.performSelector("openURL:", withObject: url) != nil 
    } 

} 
+0

符號事宜。我的代碼根本不會調用'sharedApplication'。該代碼剛剛引入了函數'UIApplication.sharedApplication()。openURL(url)',它正常工作。 – 2016-08-17 21:38:38

+0

作品!完美 – Danny182 2016-08-17 21:57:12

相關問題