5章タッチ

[悲嘆にくれたウィニフレッド姫がヒットテストを説明して]

ヘイ、ノニノニ、あなたですか?——ヘイ、ノニノニノニ、いいえ違います。——ヘイ、ノニノニ、あなたですか?——ヘイ、ノニノニノニ、いいえ違います。

—— マーシャル・ベアラー 『ワンス・アポン・ア・マットレス』

タッチとは、ユーザーがスクリーン上に指を置いたことを示すインスタンスです。システムとハードウェアは一致協力して、指がいつスクリーンに触れたか、それはスクリーンのどこかを検出します(指には太さがありますが、システムとハードウェアは巧妙に、指の位置を適切な一点に変換します)。

UIViewはUIResponderのサブクラスであるため、目に見えるタッチの受信場所になります。UIResponderのサブクラスはほかにもありますが、スクリーン上には表示されるのはどれひとつとしてありません。ユーザーが目にするのはビューであり、タッチするのもビューです(ユーザーにはレイヤも見えるかもしれませんが、レイヤはUIResponderではないため、タッチには関係しません。ユーザーがレイヤをタッチできるかのように見せかける方法については後で説明します)。

このため、ビュー上でタッチが発生するたびに、それらがみなビューに直接報告されたとしても、それはそれで理にかなっています。しかし、システムが「見て」いるのは特定のビューではなくアプリ全体です。このため、1回のタッチをひとつのオブジェクト(UITouchインスタンス)として表現し、システムはそれを封筒(UIEvent)に包んでアプリに送信します。封筒を適切なUIViewに送り届けるのはアプリ側の役目です。ほとんどの場合、これは開発者の期待どおりに自動的に実行され、開発者はタッチが発生したビュー経由でタッチに応答します。 ...

Get 詳解 iOS SDK 第4版 ―ワンランク上のiPhone/iPadプログラミング now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.