2017-01-09 1 views
0

最近私がUIViews方法で何の代わりに呼び出されます - (UIViewの*)hitTest:(するCGPoint)withEventポイント:アクセシビリティ(上で音声がオンになっている)とき(たUIEvent *)イベントを

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 

} 
をブレークポイントを入れています

メソッドを呼び出し、ボイスオーバーがオンの状態でユーザーがUIViewをタップしたときにコンパイラがここで停止するかどうかをチェックしますが、ブレイクポイントには決して来なかったので、呼び出される内容とタッチが傍受される方法を知っていますか?

答えて

-2

ヒットテストビューには、タッチイベントを処理する最初の機会が与えられます。ヒットテストビューでイベントを処理できない場合、イベントが処理できるオブジェクトが見つかるまで、イベントはそのビューの一連のレスポンダチェーンを移動し、「レスポンダチェーンはレスポンダオブジェクトで構成されています。 thisをご覧ください。

-1

まず、をダブルタップにすると、VoiceOverが有効になっているときにビューを「アクティブにする」または「タップする」必要があります。まだhitTest:…に当たっていない場合は、acccessibilityActivate()で休憩してください。これは、ダブルタップでトリガーされるデフォルトのアクセシビリティアクションです。起動時にVoiceOverがシミュレートしたタッチのデフォルトの位置であるactivationPointにも興味があります。アクティベーションポイントは、すべてのVoiceOverインタラクション(例えば、adjustableコントロール)とは関係ありません。

0

標準のhitTestメカニズムは、ボイスオーバーモードでは使用されません。代わりに、UIViewには_accessibilityHitTest:withEvent:メソッドがありますが(MacOSと違って)、プライベートであり、簡単にオーバーライドまたはコールすることはできません。

hitTestと同様に、_accessibilityHitTestは_accessibilityPointInside:withEvent:を使用します。次に、pointInside:withEvent :(public)