繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM