2012-05-07 9 views
0

フレーム(4,8)、(13,13)を持つサブビューUIボタンがあります。iOS UIButtonはフレーム外でタッチを受け取りますが、フレーム内では受け付けません

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

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

タッチ

<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メソッドを実装していません。

サブビューの範囲外のタッチをサブビューに転送でき、サブビューの境界にあるタッチがスーパービューに転送されるのはどうですか?

答えて

0

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

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

関連する問題