我是iOS應用程序開發新手。目前,我正在開發一個需要應用程序和網頁之間交互的項目。我知道我可以使用safari視圖控制器在應用程序中加載網頁,並使用網頁右上角的done按鈕返回到應用程序。但我想通過點擊網頁中的鏈接而不是完成按鈕來回到應用程序。我找不到任何解決方案。誰能幫忙?提前謝謝了。Safari視圖控制器
2
A
回答
0
這個工作對我來說,但wkwebview。 https://github.com/liqichao/wkwebview-test
這個例子是一個sfsafariview但你必須使用內用wkwebview https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch11p552webkit/ch24p825webview/WebViewController.swift
3
爲此,您可以很輕鬆地與自定義URL方案。第一方案添加到您的Info.plist
:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.mydomain.MyCallback</string>
<key>CFBundleURLSchemes</key>
<array>
<string>mydomainwebcallback</string>
</array>
</dict>
</array>
現在,你有一個機制,從被點擊的任何URL打開您的應用。在這種情況下,URL將mydomainwebcallback://whatever
現在在視圖控制器加載你的網頁,添加URL這樣的:
<a href="mydomainwebcallback://whateverinfo">Return to app</a>
,我要在這裏簡化了,但你需要一個參考您的SFSafariViewController
從您的AppDelegate
。首先在AppDelegate中:
import UIKit
import SafariServices
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var safariVC: SFSafariViewController?
func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
// Here we dismiss the SFSafariViewController
if let sf = safariVC
{
sf.dismissViewControllerAnimated(true, completion: nil)
}
return true
}
正如你可以看到我保持SFSafariViewController
的代表。現在,在我的視圖控制器,我展示VC:
import UIKit
import SafariServices
class ViewController: UIViewController {
@IBAction func showSafariVC(sender: UIButton) {
if let url = NSURL(string: "https://mywebserver/callback.html")
{
let delegate = UIApplication.sharedApplication().delegate as! AppDelegate
delegate.safariVC = SFSafariViewController(URL: url)
presentViewController(delegate.safariVC!, animated: true, completion: nil)
}
}
}
現在,當你點擊該鏈接就會解僱SFSafariViewController
。
相關問題
- 1. Safari視圖控制器或WKWebKit
- 2. 視圖控制器
- 3. 視圖控制器
- 4. 從另一個視圖控制器關閉視圖控制器
- 5. 登錄視圖控制器在模態視圖控制器
- 6. 從視圖控制器顯示新的視圖控制器
- 7. 在當前視圖控制器下加載視圖控制器
- 8. 有多少視圖控制器太多視圖控制器?
- 9. 視圖控制器上的表視圖控制器
- 10. 設置根視圖控制器的模態視圖控制器
- 11. 從其他視圖控制器刷新視圖控制器
- 12. 模型視圖控制器中的模型視圖控制器
- 13. 從子視圖控制器推動視圖控制器
- 14. 從子視圖控制器呈現主視圖控制器
- 15. 將公共視圖控制器的流行視圖控制器
- 16. 從另一個視圖控制器通知視圖控制器
- 17. 分割視圖控制器必須是根視圖控制器
- 18. 從內部視圖控制器推動視圖控制器
- 19. 關閉父視圖控制器和子視圖控制器
- 20. 分割視圖控制器不作爲根視圖控制器
- 21. 初始視圖控制器和選項卡視圖控制器
- 22. 故事板視圖控制器到編碼視圖控制器
- 23. 主視圖控制器 - >詳細視圖控制器通信
- 24. 將視圖控制器從根到視圖控制器(SplitView)
- 25. 試圖視圖控制器
- 26. iOS視圖控制器遏制|子視圖控制器通過觸動父視圖控制器
- 27. 爾康視圖控制器不控制
- 28. MVC控制器不控制視圖
- 29. 更大的視圖控制器內的翻轉視圖控制器將翻轉主視圖控制器
- 30. 使用視圖控制器既作爲模式視圖控制器和作爲標籤欄視圖控制器
謝謝大家。這一個給出了所有的細節。這個對我有用。謝謝。 –
@ShalinaHu請接受答案,如果它適合你。 –