2012-03-08 61 views
1

我有一个UIWebView它显示静态内容并通过其控制器对各种轻扫手势作出反应。如何检测UIWebView何时开始选择文本?

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

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

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

谢谢。

回答

1

我结束了使用以下方法来禁用和启用使用Rangy库的手势识别器。很棒。

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

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

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

当用户选择menuViewController会显示一个文本..你可以发现,通过添加通知您的viewController

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

相同的情况下,以检测菜单隐藏。

1

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

相关问题