2012-10-30 13 views
6

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

答えて

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

しかし、あなたの最良のオプションは、選択の状態をチェックしているタッチ終了イベント火災または選択変更イベント火災。

+1

これをお寄せいただきありがとうございます。 – HalR

関連する問題