iOS UIButton ได้รับการสัมผัสนอกเฟรม แต่ไม่ใช่ภายในเฟรม

ฉันมีปุ่ม UI มุมมองย่อยพร้อมเฟรม (4,8), (13,13)

Touch A อยู่ที่ตำแหน่ง (4,16) สัมพันธ์กับ superview แต่จะถูกส่งไปยัง superview แม้ว่าจะอยู่ภายในขอบเขตของปุ่มก็ตาม ในพิกัดหน้าต่างนี่คือ (49,131)

การสัมผัส B เกิดขึ้นหนึ่งพิกเซลโดยเหลือพิกัดหน้าต่างที่ (48,131) แต่จะถูกส่งไปที่ปุ่มมุมมองย่อย แม้ว่าจะอยู่นอกขอบเขตก็ตาม มุมมองรายงานตำแหน่ง (-1,7) ใน UIButton

แตะ ก

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

superview ไม่ได้ใช้เมธอด pointInside แบบกำหนดเอง

เป็นไปได้อย่างไรที่การสัมผัสนอกขอบเขตของมุมมองย่อยสามารถส่งต่อไปยังมุมมองย่อยได้ และการสัมผัสที่อยู่ในขอบเขตของมุมมองย่อยจะถูกส่งต่อไปยังผู้ดูแลได้อย่างไร


person Calvin    schedule 07.05.2012    source แหล่งที่มา


คำตอบ (1)


ไม่ใช่วิธีแก้ปัญหา แต่เป็นวิธีแก้ปัญหาสำหรับคำถามของฉันเอง

ลักษณะการทำงานแปลกๆ นี้ดูเหมือนจะเกิดขึ้นกับปุ่มที่มีขนาดเล็กเกินไป ในกรณีนี้คือ 13x13 การขยายขนาดปุ่ม (และใช้ contentInsent สำหรับการจัดวางรูปภาพ) เพิ่มพื้นที่สัมผัสได้ (ในกรณีนี้คือขยายเป็นความกว้าง 43 พิกเซล) เป็นประมาณครึ่งหนึ่งของปุ่ม

person Calvin    schedule 08.05.2012