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

Javascript 如何检测UIWebView何时开始选择文本?,javascript,ios,uiwebview,Javascript,Ios,Uiwebview,我有一个UIWebView,它显示静态内容,并通过控制器对各种滑动手势做出反应 文本选择已被禁用,但现在我正在开发一个新功能,以允许文本选择并显示自定义上下文菜单 现在,我需要能够检测文本选择何时处于活动状态,以便关闭滑动手势 我能想到的唯一方法是在滑动处理程序方法中使用JS检查是否有选中的文本。还有其他想法吗?有人知道如何做得更好吗 谢谢。当用户选择文本时,menuViewController将显示。。您可以通过在viewController上添加通知来检测 [[NSNotificationC

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

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

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

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


谢谢。

当用户选择文本时,menuViewController将显示。。您可以通过在viewController上添加通知来检测

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

要检测菜单隐藏的相同情况。

当用户选择文本时,menuViewController将显示。。您可以通过在viewController上添加通知来检测

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

要检测菜单隐藏的情况相同。

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

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

我使用以下方法使用库禁用和启用手势识别器。效果很好

- (BOOL) isSelectionActive
{
    NSString * resultStr = [self.contentView stringByEvaluatingJavaScriptFromString:
                            @"rangy.getSelection().isCollapsed"];

    NSLog(@"resultStr: %@", resultStr );

    if ([resultStr isEqualToString:@"true"]) {
        return NO;
    }
    else {
        return YES;
    }
}

最后,我使用以下方法禁用并启用了使用库的手势识别器。效果很好

- (BOOL) isSelectionActive
{
    NSString * resultStr = [self.contentView stringByEvaluatingJavaScriptFromString:
                            @"rangy.getSelection().isCollapsed"];

    NSLog(@"resultStr: %@", resultStr );

    if ([resultStr isEqualToString:@"true"]) {
        return NO;
    }
    else {
        return YES;
    }
}