1

(他のコントロールの中でも)UIScrollviewを含むアプリがあります。スクロールビューでのスクロールを無効にする必要がある場合がありますが、

   scrollView.scrollEnabled = YES;

財産。どうすればこれを処理できますか?

私は傍受しようとしました

    -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
    { 
    if(mycondition) {
      return;
    }

そして、私の条件が有効な場合、コードはリターンにヒットしますが、スクロールは引き続き発生します。

4

2 に答える 2

0

あなたはこれを試してみました:

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{  
   if(mycondition)
      [scrollView setContentOffset:scrollView.contentOffset animated:YES];    
}

myconditionがtrueの場合、これによりスクロールが停止します。

于 2013-02-28T16:40:27.447 に答える
0

私はそれをするためのちょっと不器用な方法を持っていますが、それはあなたを助けるかもしれないし、助けないかもしれません。

scrollViewWillBeginDecelerating:を使用して何かをしようとしても機能しませんでした。これは、メソッドがニュースを提供するだけで、許可を求めていないためです(voidを返します)。

代わりに、許可を求めていないscrollViewDidScroll:を実装できますが、そのメソッドでは、scrollviewが実際に移動しないようにcontentOffset値を設定することにより、スクロールが発生しないようにすることができます。これを機能させるには、スクロールしたくない他の場所を検出して、その時点でcontentOffsetを保存する必要があります。

    // Condition starts.  Save the content offset
    if (whatever) {
       lockedContentOffset = tableView.contentOffset;
    }

..。

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
    if (condition_for_which_i_dont_want_to_scroll) {
        scrollView.contentOffset = lockedContentOffset;
        NSLog(@"Reset content offset");
    }
}

scrollViewはまだスクロールを試みており、勢いがあるため、メソッドscrollViewDidScroll:は、スクロールを試みるたびに数回呼び出されます。ただし、このコードのテストでは、明らかなスクロールは見られませんでした。

お役に立てれば。

于 2013-02-28T16:46:54.423 に答える