【问题标题】:Programmatically display keyboard in UIWebView以编程方式在 UIWebView 中显示键盘
【发布时间】:2012-04-04 11:42:21
【问题描述】:

如果 UIWebView 中的元素具有样式属性 -webkit-user-modify:read-write,则按下该元素会导致键盘出现。是否可以通过编程方式调出键盘?

谢谢

【问题讨论】:

  • 也许将该样式应用于身体?

标签: javascript iphone ios uiwebview webkit


【解决方案1】:

现在看起来在 iOS6 中你可以使用“keyboardDisplayRequiresUserAction”来做到这一点:

keyboardDisplayRequiresUserAction 一个布尔值,指示 Web 内容是否可以以编程方式显示键盘。

@property (nonatomic) BOOL keyboardDisplayRequiresUserAction 讨论 当此属性设置为 YES 时,用户必须显式点击 Web 视图中的元素以显示该元素的键盘(或其他相关输入视图)。当设置为 NO 时,元素上的焦点事件会导致输入视图自动显示并与该元素关联。

此属性的默认值为 YES。

可用性 在 iOS 6.0 及更高版本中可用。 宣布于 UIWebView.h

参考:

【讨论】:

    【解决方案2】:

    来自iOS Developer Library

    因为当视图成为第一响应者时键盘会自动显示,所以您通常不需要做任何事情来显示它。但是,您可以通过调用该视图的 becomeFirstResponder 方法以编程方式显示可编辑文本视图的键盘。调用此方法会使目标视图成为第一响应者并开始编辑过程,就像用户点击了视图一样。

    我怀疑调用[webView becomeFirstResponder] 是否会调出键盘,只要没有具有所需样式的 HTML 元素具有焦点。因此,您真正的问题可能是以编程方式将 HTML 文档中的焦点设置为元素。我会尝试通过 Javascript 来做到这一点。这样的事情可能会奏效:

    NSString *jscode = @"document.getElementById('whatever').focus();";
    [self.webView stringByEvaluatingJavaScriptFromString:jscode];
    

    【讨论】:

    • 不走运。我还应该说我在 UIWebView 中放置了一个 canBecomeFirstResponder 方法,该方法仅返回 YES,并在该方法中放置了一个断点。当我触摸带有 style 属性的元素时,键盘会出现,而不会调用 canBecomeFirstResponder。有趣的是,当我触摸输入辅助视图上的 Done 按钮时会调用该方法。
    • 你能发布你的 UIWebView 显示的 HTML 代码吗?最终它将有助于找到一个 Javascript 函数来满足您的需求。
    • HTML 的头部有这个脚本
    • 然后在委托 shouldStartLoadWithRequest 方法中返回 YES,并在 webViewDidFinishLoad 委托方法中执行 [self.view becomeFirstResponder]。
    • 然后在shouldStartLoadWithRequest委托方法中返回YES,在webViewDidFinishLoad方法中调用[self.view becomeFirstResponder]。如果我可以让它工作,那么我将更多地控制键盘何时显示以响应触摸。
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 2020-09-30
    • 2014-12-24
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多