如何检测UIWebView何时开始select文本?

我有一个UIWebView显示静态内容,并通过其控制器对各种轻扫手势作出反应。

文本select已被禁用,但现在我正在开发一个新的function,允许select文本,并提供一个自定义的上下文菜单。

现在我需要能够检测文本select何时处于活动状态,以便我可以closures滑动手势。

我能想到的唯一方法是检查是否有选中的文本在滑动处理程序方法中使用JS。 任何其他的想法? 有人知道如何做得更好吗?

谢谢。

当用户select一个文本menuViewController会显示出来..你可以检测到你的viewController添加一个通知

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuShown) name:UIMenuControllerDidShowMenuNotification object:nil]; 

同样的情况下检测为菜单隐藏。

您可以使用“长按手势识别器”绑定到UIWebView。 您可以将其校准到用户在选定文本之前按住文本所需的时间。

我结束了使用下面的方法来禁用和启用使用Rangy库的手势识别器。 很好用。

 - (BOOL) isSelectionActive { NSString * resultStr = [self.contentView stringByEvaluatingJavaScriptFromString: @"rangy.getSelection().isCollapsed"]; NSLog(@"resultStr: %@", resultStr ); if ([resultStr isEqualToString:@"true"]) { return NO; } else { return YES; } }