我有UIWebView
显示静态内容并通过其控制器对各种滑动手势做出反应。
文本选择已被禁用,但现在我正在开发一项新功能,以允许文本选择并显示自定义上下文菜单。
现在我需要能够检测文本选择何时处于活动状态,以便我可以关闭滑动手势。
我能想到的唯一方法是在滑动处理程序方法中检查是否使用JS选择了文本。还有其他想法吗?有人知道怎么做得更好吗?
感谢。
答案 0 :(得分:6)
当用户选择一个textViewController将显示的文本时...你可以通过在viewController上添加一个通知来检测它
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuShown) name:UIMenuControllerDidShowMenuNotification object:nil];
检测菜单隐藏的情况相同。
答案 1 :(得分:1)
您可以使用“Long Press Gesture Recognizer”绑定到UIWebView。您可以将其校准到用户在选择文本之前按住文本所需的时间。
答案 2 :(得分:1)
我最终使用以下方法来禁用和启用使用Rangy库的手势识别器。效果很好。
- (BOOL) isSelectionActive
{
NSString * resultStr = [self.contentView stringByEvaluatingJavaScriptFromString:
@"rangy.getSelection().isCollapsed"];
NSLog(@"resultStr: %@", resultStr );
if ([resultStr isEqualToString:@"true"]) {
return NO;
}
else {
return YES;
}
}