[英]how to detect when UIWebView starts selecting text?
我有一个UIWebView
,它显示静态内容并通过其控制器对各种滑动手势做出反应。
文本选择已被禁用,但是现在我正在开发一项新功能,以允许选择文本并显示自定义上下文菜单。
现在,我需要能够检测到何时选择了文本,以便可以关闭滑动手势。
我能想到的唯一方法是在滑动处理程序方法中使用JS检查是否有选定的文本。 还有其他想法吗? 有人知道如何做得更好吗?
谢谢。
当用户选择文本时,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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.