-2

UIWebViewを搭載したiPhoneで実行されているアプリケーションがあります。このビューにWebページをロードすると、ユーザーはページの下部にあるUIToolBarに追加したボタンを押して次のページに進むことができます。私が求めているのは、ページの半分または一番下までスクロールするまで、ユーザーがこれらのボタンを押さないようにすることです。これは可能ですか?

4

3 に答える 3

4

ページの半分以上になる場合は、おそらく webview のスクロール ビューのコンテンツ オフセットを使用できます。

コントローラーに、webview のスクロールビューを参照するインスタンス変数を作成します。iOS 5 では webview.scrollView プロパティを使用して scrollView にアクセスできますが、以前のバージョンでは webView のサブビューを検索する必要がありました。

if([_webView respondsToSelector:@selector(scrollView)]) {
  _webViewScrollView = _webView.scrollView;
}
else {
  for (UIView *subview in _webView.subviews) {          
    if ([subview isKindOfClass: [UIScrollView class]]) {
      _webViewScrollView = subview;
      break;
    }
  }
}

次に、スクロールビューのデリゲートを、関心のあるコントローラーに設定します

_webViewScrollView.delegate = self;

次のデリゲート メソッドを実装します。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  if( scrollView.contentOffset.y > someValue ) {
    // Enable Buttons
  }
  else {
    // Make / Keep buttons inactive..
  }
}

別の方法は、JavaScript を使用し、stringByEvaluatingJavaScriptFromString でファンキーなことを行うことです。

于 2012-04-25T08:39:20.003 に答える
1

scrollViewUIWebView のプロパティを使用し、その委任コールバックを使用します

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 

スクロール終了イベントと UIScrollview プロパティの contentOffset を処理するために、そのコンテンツ サイズ (Web ページの実際のサイズ) に対するスクロール位置を知ることができます。

于 2012-06-20T10:09:43.667 に答える
0

アプリケーションの起動時に、ツールバー ボタンを無効にします。次に、この行を追加して現在のスクロール位置を確認します。

int position = [webView stringByEvaluatingJavaScriptFromString:@"window.scrollBy(0,180);"];

ページを特定の位置までスクロールしたら、ツールバー ボタンを有効にします。 または 、スクロール ビューのデリゲート メソッドを使用できます。

于 2012-04-25T08:25:40.417 に答える