2009-05-22 10 views
0

私はUIImageViewオブジェクトのグリッドを含むUIScrollViewを実装しました。スーパービューとサブビューの両方について、userInteractionEnabledはYESです。ユーザーがスクロールしたいだけで、UIScrollView内のUIImageViewをタップしないようにするには、どうすれば検出できますか?

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    if ([touch view] == self && [touch tapCount] >= 1) { 
     NSLog(@"Cooooool! The user touched me!"); 
    } 
} 

:Iこのメソッドを持っている)そのUIImageViewオブジェクトの内部

、ユーザーがスクロールし、彼/彼女の指がUIImageViewに触れると、それはimediately私が欲しいものではありませんその上でタップを認識し、 「ああ、いいえ、実際にはスクロールしたいだけなので、そのタッチをあまり重視しないでください」などのように認識できる方法はありますか?基本的に、私が必要とするのは、指がアイコンに触れることができるホームスクリーンの動作ですが、ユーザーがスクロールを開始して指を離すと、タッチされたアプリは起動しません。

答えて

2

UIScrollViewは、既にその動作を実装しています。ユーザーがドラッグするのに十分速い場合、touchesBegan:withEvent:メソッドは決して呼び出されません。

スクロール・ビューでは、サブクラスUIImageViewにスクロール・ビューを転送しますが、スクロールするユーザーのみを認識すると、カスタム・クラスの「-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)eventメソッド」が呼び出されます。

これを実装すると、キャンセルされたタッチが通知されます。

関連する問題