gpt4 book ai didi

javascript - 在 iOS 中加载时防止键盘掉落

转载 作者:行者123 更新时间:2023-11-30 06:29:38 26 4
gpt4 key购买 nike

在我的 iOS 应用程序中,我需要根据用户之前的交互将重点放在某些文本字段上。我可以很好地使用 javascript 进行聚焦,如下所示(在 viewDidFinshLoad 方法中)

if (![focusElement isEqualToString:@""]) {
// make the keyboard freely appear without user intervention
[webView setKeyboardDisplayRequiresUserAction:NO];
// first lose any previous focus and then focus on
// the previously clicked element
NSString *jsToFocus = [NSString stringWithFormat:
@"document.activeElement.blur();document.getElementById(\'%s\').focus();",
[focusElement UTF8String]];

// javascript focuses on the input
[webView stringByEvaluatingJavaScriptFromString:jsToFocus];

这很好用。唯一的问题是当页面加载更多框架/javascript 时,键盘会掉落并在每次新加载时重新出现几次。我想这是由于较早发生的

   [webView setKeyboardDisplayRequiresUserAction:NO];

是否有(更好的)方法来做到这一点,更重要的是,一旦聚焦在输入元素上,就保持键盘显示,直到用户将其关闭。

提前致谢。尼克尔

最佳答案

作为解决我的问题的方法,我向 WebView 引入了一个属性,称为它

    @property BOOL isKeyBoardShown;

默认情况下,它设置为 NO,只要不显示键盘,我就允许加载更多的框架/元素。然而,一旦我专注于所需的元素,我立即将其设置为 YES 并强行停止任何进一步的加载。简而言之,我的 viewShouldStartLoad... 方法看起来像

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

if (self.isKeyBoardShown)
return NO;

... further code ...

然后我介绍了键盘通知

// set up keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(keyboardWillBeHidden:)
name: UIKeyboardWillHideNotification
object: nil];

方法

- (void) keyboardWillBeHidden : (NSNotification *) keyboardHideNotice {
self.isKeyBoardShown = NO;
}

因此,总体思路是关注元素 -> 显示键盘 -> 只要键盘启动就停止进一步加载 -> 在键盘关闭时重置加载权限

这工作正常,但现在我有进一步的问题:

如果用户完成输入文本并按下键盘上的 searchgo 键,因为键盘仍然处于打开状态并且 isKeyboardShown 属性为 YES,除非用户点击镜头(关闭键盘),否则 webView 不会继续搜索。

有什么方法可以检测搜索按键事件吗?注意,输入不是 UISearchBar:(

关于javascript - 在 iOS 中加载时防止键盘掉落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com