2

ビューをドラッグできるアプリを作成しました。UIScrollViewが適していない特別な動作が必要でした。しかし、問題は、これらのビューの一部がタッチイベントに応答することであり、それらをドラッグすると、タッチをキャンセルする必要があります。

UIScrollViewには、サブビューのタッチをキャンセルする機能があり、ユーザーがボタンをタッチダウンしてからスクロールを開始すると、ユーザーが十分にスクロールするとすぐにスクロールビューがボタンのタッチをキャンセルするため、ボタンがトリガーされません。行動。

これを行う1つの方法は、すべてのサブビューをサブクラス化し、すべてのタッチ処理メソッドでブールフラグを操作することですが、これは非常に面倒で汚いものです。

UIScrollViewと同じように、サブビューのタッチをキャンセルするためのAPIを介したより良い方法はありますか?

4

1 に答える 1

2

UIGestureRecognizerAPIを介してタッチをキャンセルします。UIScrollViewは、実際にはその下でUIPanGestureRecognizerを使用します。 http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009279-CH1-SW9

UIGestureRecognizerには、タッチの送信の開始と終了を遅らせる機能もあります。

@property(nonatomic) BOOL delaysTouchesBegan
@property(nonatomic) BOOL delaysTouchesEnded

ドラッグジェスチャを実行するには、UIScrollViewのようにUIPanGestureRecognizerを使用します。これを行うと、ちょっとしたコツがすべて得られます。

于 2012-09-02T14:11:12.147 に答える