如何从 Webview 的键盘完成按钮操作

Posted

技术标签:

【中文标题】如何从 Webview 的键盘完成按钮操作【英文标题】:How to get Done button action from keyboard of Webview 【发布时间】:2017-06-21 08:58:36 【问题描述】:

我在 UIWebview 中有一个文本字段。按下完成按钮时,键盘不会隐藏并继续显示在视图上。每当按下完成按钮时,我都想关闭键盘。有什么方法可以在我的 swift 代码中完成按钮操作?

任何帮助将不胜感激。

【问题讨论】:

看到这个***.com/questions/20321110/… 还是不行 你能分享你在网页视图中制作文本字段的屏幕截图 文本字段正在添加到 html 页面中 你拥有这个 html 页面吗?可以修改html代码吗? 【参考方案1】:

通过 UIWebview 内的文本字段,我将它作为 UITextField 作为 UIWebview 内的子视图,对吗? 在这种情况下,你只需要在你的类中实现 UITextFieldDelegate,特别是这个委托方法 textFieldShouldReturn ,只要点击完成按钮就会调用它,所以基本上你会有这样的东西:

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
       if (textField == correctTextField) 
           textField.resignFirstResponder()
        
        return true
    

显然,您首先需要将该控制器指定为 textField 委托

但据说它不是本机文本字段,而是 html 或 web 内容的某种部分,然后我会做什么,我会让它调用一个特殊方案的请求,例如“hideKeyboard”,我会实现 uiwebviewdelegate 并测试该方案以在我遇到它时隐藏键盘,这是 obj c 中的一个示例:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
 navigationType:(UIWebViewNavigationType)navigationType

    NSURL *URL = [request URL];
    NSString *scheme = [URL scheme];
    if ([scheme isEqualToString:@"hideKeyboard"]) 
      [self.view endEditing:true];
    

【讨论】:

文本字段不是原生的,它是从网页创建的。 好吧,更准确地说,在这种情况下,问题就变成了“网页”中的完成按钮调用了什么? 我只想在点击返回按钮时隐藏键盘,在网页中无法执行任何相关操作。 不,我的意思是它是发送请求还是什么...?这样你就可以实现 webview 委托,拦截该请求并隐藏键盘然后 所以对于每个网址我都必须检查和隐藏键盘,对吗?实际上网页中有更多的搜索栏,所以这将是一项艰巨的任务

以上是关于如何从 Webview 的键盘完成按钮操作的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:使用 XIB 退出键盘并完成按钮操作

如何添加完成按钮以关闭数字键盘

android webview怎么加载ionic的html5

如果用户在返回键盘之前按下按钮,如何将按钮操作应用于文本字段

如何在反应离子应用程序中将 ios 键盘返回按钮更改为下一步/完成?

使用完成按钮关闭我的自定义键盘