2012-01-30 7 views
0

私は、人々がtouchesBeganとtouchesEndedをビューのView Controllerに書いたコードスニペットを見ました。ビューコントローラのビューにイベントを書き込むとどうなりますか?

私はiOS開発に比較的新しく、どのように可能であるか理解できません。

カスタムビューでオーバーライドするこれらのUIViewクラスのメソッドはありません。

と可能ならば私はビューのタッチを呼び出す場合どのバージョンが優先されるのですか? Viewコントローラのものか、View自体のもの。

答えて

3

ドキュメントで簡単に調べることができるので、UIResponderクラスでtouches...:withEvent:ファミリのメソッドが宣言されています。 UIViewUIViewControllerの両方がUIResponderから継承されているため、両方のクラスはメソッドにアクセスでき、オーバーライドできます。

両方の実装が実装されている場合、インプリメンテーションが優先されるかどうかは、レスポンダチェーンによって定義されます。タッチイベントは、イベントを処理したいオブジェクトが見つかるまでレスポンダチェーンを移動します。ビューはレスポンダチェーン内のビューコントローラの前に配置されるため、ビュークラスの実装が実行されます。

0

ビューコントローラには、これらのメソッドのコピーもあります。利便性のため、タッチ操作を処理するためにカスタムUIViewサブクラスを作成する必要はありません。

ビューとビューコントローラの両方がこれらのメソッドを実装している場合、ユーザーが画面に触れたときに両方が呼び出されますが、ビューのものが最初に呼び出されると思います。

iOS 3.2/4.0以降、UIGestureRecognizersは、一般に、ほとんどのタイプのタッチ操作を行うためにはるかに簡単な方法です。 touchesBeganとtouchesEndedを使用する必要はほとんどありません。

関連する問題