6

テキスト選択が開始または終了したという UIWebView の通知を観察する方法を探しています。ピンと青い選択オーバーレイが表示されると、Javascript の選択オブジェクトと範囲オブジェクトが自動的に更新されますが、タップして選択を終了すると、通知を受け取るきれいな方法がないようです。

4

1 に答える 1

1

JavaScripttouchendイベント (またはtouchesEndedObj-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 に答える