2012-03-08 45 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。您可以將其校準到用戶在選定文本之前按住文本所需的時間。

相關問題