iOS UIButton menerima sentuhan di luar bingkai, tetapi tidak di dalam bingkai

Saya memiliki tombol UI subview dengan bingkai (4,8),(13,13).

Sentuhan A berada pada posisi (4,16) relatif terhadap superview, namun dikirim ke superview, meskipun berada dalam batas tombol. Dalam koordinat jendela ini adalah (49,131).

Sentuhan B terjadi satu piksel ke kiri dengan koordinat jendela (48.131) namun dikirim ke tombol subview, meskipun berada di luar batas. Tampilan melaporkan posisi (-1,7) di UIButton.

Sentuh 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}

Sentuh 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}

Superview tidak mengimplementasikan metode pointInside kustom.

Bagaimana caranya agar sentuhan di luar batas subview dapat diteruskan ke subview dan sentuhan yang berada di dalam batas subview diteruskan ke superview?


person Calvin    schedule 07.05.2012    source sumber


Jawaban (1)


Bukan solusi, tapi solusi untuk pertanyaan saya sendiri.

Perilaku aneh ini tampaknya terjadi pada tombol yang terlalu kecil, dalam hal ini berukuran 13x13. Memperluas ukuran tombol (dan menggunakan contentInsent untuk penempatan gambar), meningkatkan area yang dapat disentuh (dalam hal ini memperluasnya hingga lebar 43 piksel) menjadi sekitar setengah tombol.

person Calvin    schedule 08.05.2012