如何检测UIWebView何时开始选择文本?

时间:2012-03-08 17:22:54

标签: javascript ios uiwebview

我有UIWebView显示静态内容并通过其控制器对各种滑动手势做出反应。

文本选择已被禁用,但现在我正在开发一项新功能,以允许文本选择并显示自定义上下文菜单。

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

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

感谢。

3 个答案:

答案 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;
    }
}