2014-09-21 59 views
1

我可以在iOS8中使用自定義鍵盤啓動瀏覽器嗎?我創建了自定義鍵盤並添加了瀏覽器圖標。現在我想在用戶點擊它時啓動瀏覽器。從自定義鍵盤iOS 8啓動瀏覽器?

+0

[iphone應用程序啓動safari]的可能重複(http://stackoverflow.com/questions/822599/launch-safari-from-iphone-app) – n00bProgrammer 2014-09-21 07:56:58

+0

自定義鍵盤不使用自己的應用程序上下文,但使用擴展上下文,所以我認爲不重複。請重新認識。 – bllakjakk 2014-09-21 08:04:33

+0

@ n00bProgrammer我想從iOS 8擴展而不是從iPhone應用程序啓動瀏覽器。 – 2014-09-21 09:03:48

回答

1

你可以使用NSExtensionContext類的api。 Btw。 NSExtensionContext對象表示調用應用程序擴展的主機應用程序上下文。

- (void)openURL:(NSURL *)URL 
completionHandler:(void (^)(BOOL success))completionHandler 

下面是一個示例:

NSURL *url = [NSURL URLWithString:@"http://www.google.com.com"]; 
NSExtensionContext *myExtension=[self extensionContext]; 
[myExtension openURL:url completionHandler:nil]; 

但有一個陷阱。 每個擴展點決定是否支持此方法,或者支持此方法的條件。

因此,在這種情況下,您應該使用WebView並在其中加載請求以重定向到瀏覽器。

EDIT1:

重定向從網頁視圖Safari瀏覽器試試這個:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { 
     //[[UIApplication sharedApplication] openURL:[inRequest URL]]; 
      [myExtension openURL:url completionHandler:nil]; 
      return NO; 

} 

而且如果需要直接啓動本機應用程序使用預定義的方案,例如:

地圖://

+0

謝謝,但我也想打開一些應用程序來使用URlScheme – 2014-09-21 09:01:54

+0

也可以在iOS模擬器中測試openUrl? – 2014-09-21 09:04:33

+0

自定義的uri方案也可以用來處理其他應用程序。模擬器的行爲也適用於這種情況。 – bllakjakk 2014-09-21 09:12:32