0

フレーム(4,8)、(13,13)のサブビューUIbuttonがあります。

タッチ A はスーパービューに対して (4,16) の位置にありますが、ボタンの境界内にあるにもかかわらず、スーパービューに送信されます。ウィンドウ座標では (49,131) です。

タッチ B は、ウィンドウ座標 (48,131) の 1 ピクセル左で発生しますが、範囲外であっても、サブビュー ボタンに送信されます。ビューは、UIButton の (-1,7) 位置を報告します。

タッチA

<UITouch: 0x7b2ddeb0> phase: Ended tap count: 1 
window: <DebugWindow: 0x791357f0; baseClass = UIWindow; frame = (0 0; 320 480); layer = <UIWindowLayer: 0x791358d0>> 
view: <QueueOverlayCellView: 0x7b1ca320; frame = (2 2; 269 30); tag = 1; layer = <CALayer: 0x7b1ca3a0>> 
location in window: {49, 131} previous location in window: {49, 131} 
location in view: {4, 16} previous location in view: {4, 16}

タッチ B

<UITouch: 0x7b442e90> phase: Ended tap count: 1 
window: <DebugWindow: 0x791357f0; baseClass = UIWindow; frame = (0 0; 320 480); layer = <UIWindowLayer: 0x791358d0>>
view: <TableButton: 0x7b1cada0; baseClass = UIButton; frame = (4 8; 13 13); opaque = NO; layer = <CALayer: 0x7b1cae40>> 
location in window: {48, 130} previous location in window: {48, 130}
location in view: {-1, 7} previous location in view: {-1, 7}

スーパービューはカスタム pointInside メソッドを実装していません。

サブビューの境界外のタッチをサブビューに転送し、サブビューの境界内にあるタッチをスーパービューに転送するにはどうすればよいですか?

4

1 に答える 1

0

解決策ではありませんが、私自身の質問に対する回避策です。

この奇妙な動作は、小さすぎるボタン (この場合は 13x13) で発生するようです。ボタンのサイズを拡大する (および画像の配置に contentInsent を使用する) と、タッチ可能な領域が拡大され (この場合は幅 43 ピクセルに拡大されます)、ボタンの約半分になりました。

于 2012-05-08T22:45:08.240 に答える