在 UIWebView swift中单击按钮时打开 ViewController

Posted

技术标签:

【中文标题】在 UIWebView swift中单击按钮时打开 ViewController【英文标题】:Opening ViewController when click on button in UIWebView swift 【发布时间】:2016-08-09 11:55:00 【问题描述】:

我有一个具有 UIWebView 的应用程序,并且 Webview 包含简单的 Button

这是我的 WebViewController :

import UIKit

class testViewController: UIViewController 
    internal static var testID = 0

    @IBOutlet weak var myWebView: UIWebView!
    override func viewDidLoad() 
        super.viewDidLoad()

    

    override func viewDidAppear(animated: Bool) 
        super.viewDidAppear(animated)

        let url = NSURL (string: "http://mydomainname/index.html");
        let requestObj = NSURLRequest(URL: url!);
        myWebView.loadRequest(requestObj);
    

而 webView 完美地显示了我的 HTML

当我单击 HTML 文件中的按钮时,我只需要从我的 ios 项目中展示一个 newViewController 吗?

像这样:

<button onclick="myFunction()> Submit </button>

<script>
function myFunction()

presentViewController('myViewControllerName');





</script>

在 iOS 中有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

你可以在js动作中分配一个scheme:

window.location = yourscheme://<scheme_content>

在 swift 层你可以使用回调:

func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool 
    if (request.URL.scheme == "yourscheme") 
        // Your code
    
    return true;

【讨论】:

【参考方案2】:

是的,你可以这样做:

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool 
        
        if (navigationType == UIWebViewNavigationType.FormSubmitted) 
            let VC = self.storyboard?.instantiateViewControllerWithIdentifier("myViewControllerName") as? myViewControllerName

            let navigationController = UINavigationController(rootViewController: VC!)
            self.navigationController?.presentViewController(navigationController, animated: true, completion:nil)

    
        
        return true
    

【讨论】:

我的 xcode 错误:使用未声明的类型 'myViewControllerName' 哈哈哈哈哈 - 我的 xcode 错误:使用未声明的类型 'myViewControllerName' 因为您需要给您的视图控制器名称,而不是“myViewController”,这只是一个示例名称

以上是关于在 UIWebView swift中单击按钮时打开 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

在 swift 4 上单击 UIWebview 上的播放视频时出错

我在UIWebView中加载Web视图,我需要单击网站上的登录按钮

Swift:UISearchBar:单击搜索按钮时获取文本

当我单击 UIWebView 时,如何在 Safari 中打开链接?

按钮单击时的 uiwebview 不会返回到该按钮操作中传递的 url

UITableView:单击单元格并使用 UIWebView 打开单元格中的链接