我使用javascript来检测长按(一个touchstart事件,然后300ms内罕见的touchmove事件将被视为长按,不需要touchend),然后使用javascript
document.location = "XXXXXXX";
向上层UIView发送通知,保证js代码没有问题。
问题来了:然后在我写的委托(delegate)中
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
/*
blablabla
*/
//show Contextual Menu
[webView resignFirstResponder];
CGRect viewRect = CGRectMake(0, 0, 320, 460);
ContextualMenu *menu = [[ContextualMenu alloc] initWithFrame:viewRect];
[menu becomeFirstResponder];
/*
blablabla
*/
return NO;}
ContextualMenu *菜单 View 的某些部分是半透明的,因此我可以看到:
当我在 UIWebView 中开始长按并且 ContextualMenu 的 View 出现并覆盖 UIWebView 时,我的手指仍然可以滚动 UIWebView(直到我从屏幕上抬起手指)
有什么方法可以阻止这种行为,并在 ContextualMenu 显示时将焦点从 UIWebView 移动到 ContextualMenu View ?(忽略正在进行的长按手势)
更新:
我在JS发送通知到上层UIView之前和之后添加了这些代码,但仍然没有用。(也尝试过触发touchcancel事件)
$(event.target).trigger('touchend');
$(event.currentTarget).trigger('touchend');
最佳答案
您是否尝试将 UIWebView 的 userInteractionEnabled 设置为 False?
关于javascript - 如何在长按期间将焦点从 UIWebView 转移到另一个 UIView 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913689/