6

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

4

1 回答 1

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;
}

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

于 2013-06-09T21:49:12.537 回答