UIWebView中的文本选择确实开始或结束的通知?

Ste*_*ner 6 selection uiwebview

我正在寻找一种方法来观察UIWebView中的文本选择已经开始或结束的通知.一旦引脚和蓝色选择叠加层出现,它会自动更新Javascript选择和范围对象,但是当您点击选择并结束时,似乎没有一种干净的方式来获得通知.

mat*_*ven 1

您可以简单地锁定 javascripttouchend事件(或touchesEnded在 Obj-C 中)并检查window.getSelection(). 还有 javascript 事件selectionchange

我使用的另一种方法是通过循环子视图来检查 UIWebView 选择的状态:

- (bool) selectionInWebView:(UIWebView*)webView {
    UIScrollView *scrollView = webView.scrollView; //assumes IO(6)? and scrollView is exposed. Loop subviews otherwise.
    UIView *browserView;

    for(int i = 0; scrollView.subviews.count; i++){
        if([NSStringFromClass([scrollView.subviews[i] class]) isEqualToString:@"UIWebBrowserView"]){
            browserView = scrollView.subviews[i]; break;
        }
    }

    if(browserView == nil) return false;

    for(int i = 0; browserView.subviews.count; i++){
        if([NSStringFromClass([browserView.subviews[i] class]) isEqualToString:@"UIWebSelectionView"]){
            //UIView *selectionView = browserView.subviews[i];
            return true; //selection view exists, a selection is in progress
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

但最好的选择是在触摸结束事件触发或选择更改事件触发时检查选择的状态。