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

时间:2012-10-30 19:06:52

标签: uiwebview selection

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

1 个答案:

答案 0 :(得分:1)

您可以直接锁定javascript touchend事件(或Obj-C中的touchesEnded)并检查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;
}

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