2013-08-28 8 views
8

私はUIScrollViewをいくつかのサブビューなどで持っています。私もscrollViewのdelegateで、- (void)scrollViewDidScroll:(UIScrollView *)scrollViewを実装しています。私のスクロールの下に別の見方があります。現在のUIScrollViewのタッチをキャンセルする

scrollViewのcontentOffsetがx軸上で50ピクセル以下になる場合は、scrollViewのcontentOffsetを「リセット」し、現在のscrollViewジェスチャをキャンセルして、新しいビューが表示されたときにコンテンツを操作しないようにします。

私はそうのような方法で実装しました:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x < -50) 
    { 
     scrollView.contentOffset = CGPointZero; 
     [self showBackView]; 
     //here I want to cancel the current touch on the scrollview since it keeps scrolling if I drag my finger 
    } 
} 

を私はNOuserInteractionEnabledプロパティを設定しようとしたが、それはタッチが終了した後にのみ有効になります。と私は他のプロパティの束を試してみましたが、どれもうまくいかないようです。

どうすればこの問題を解決できますか?

+0

'scrollEnabled'をNOに設定しようとしましたか? –

+0

はい、動作しませんでした。パンジェスチャ認識機能を無効にすると、そのジョブが実行されます。 – Majster

答えて

31

panGestureRecognizerをスクロール表示するように無効にしてから、再度有効にしてみてください。これにより、認識装置の現在のセッションがキャンセルされます。

self.scrollView.panGestureRecognizer.enabled = NO; 
self.scrollView.panGestureRecognizer.enabled = YES; 
+1

これは素晴らしいことです。私は 'UITableView'を使って' UIRefreshControl'を使ってシナリオを作成しましたが、プルダウンするとAPI呼び出しが行われました。 API呼び出しがエラーを起こした場合、アラートダイアログが表示されました。問題はあなたのタッチがまだ 'UITableView'の上にあるので、私たちが望まない別のAPI呼び出しをやりとりして呼び出すことができるということでした。 'UITableViews'タッチイベントがキャンセルされたので、アラートのためにユーザは基礎となるテーブルビューと対話できません。 – micnguyen

関連する問題