簡體   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