タッチイベントを処理するためのIBActionの設定と、touchesBegan:touchesMovedなどの使用との間に実際の違いはありますか?どのような考慮事項により、一方が他方よりも優先されますか?
1 に答える
アクセシビリティ
IBAction
のようなイベントにアタッチすることを意味する場合、UIControlEventTouchUpInside
タッチイベントを複製するためにいくつかの作業を必要とする、コントロールイベントにアタッチされたかなりの「魔法」があります。
最も明らかなのは、をタッチしてから離す前にボタンから少しUIButton
ドラッグした場合でも、ボタンはそのイベントを送信します。距離は、ユーザビリティの実験によって選択されました。ボタンを押していると思っているときに、誰かの指がどれだけ滑ることができるでしょうか。UIControlEventTouchUpInside
コントロールイベントを使用すると、iOS6のガイド付きアクセスやその他のユーザー補助機能がアプリを理解しやすくなると思います。
モデルからのビューの分離
コントロールイベントを使用すると、ビューをタップしたときにどのような効果があるかを知る必要がなくなります。これは、Model-View-Controllerパラダイムでは良いことと考えられています。理想的には、コントローラーがイベントを受信し、それに合わせてモデルを更新します。
結論
コントロールイベントとの相互作用を実装できる場合は、そうすることをお勧めします。
ただし、コントロールに複雑な相互作用が必要な場合もあります。マルチタッチでフィンガーペインティングのようなものを実装している場合は、タッチがいつどこで発生するかを正確に知る必要があります。その場合は、、、およびとの相互作用を実装しtouchesBegan
ます。touchesMoved
touchesEnded
touchesCancelled