iOS UIButton получает касание за пределами кадра, но не внутри кадра

У меня есть UIbutton subview с кадром (4,8), (13,13).

Сенсор A находится в позиции (4,16) относительно супервизора, но отправляется в супервизор, даже если он находится в пределах границ кнопки. В координатах окна это (49,131).

Касание B происходит на один пиксель слева с координатами окна (48,131), но отправляется на кнопку подпредставления, даже если оно выходит за пределы. Представление сообщает о позиции (-1,7) в UIButton.

Нажмите 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.

Как получается, что касание за пределами подпредставления может быть перенаправлено на подпредставление, а касание, которое находится в границах подпредставления, переадресовано на супервизор?


person Calvin    schedule 07.05.2012    source источник


Ответы (1)


Не решение, а обходной путь к моему собственному вопросу.

Такое странное поведение, по-видимому, происходит с слишком маленькими кнопками, в данном случае размером 13x13. Увеличение размера кнопки (и использование contentInsent для размещения изображения) увеличило доступную для прикосновения область (в данном случае расширяя ее до 43 пикселей в ширину) примерно до половины кнопки.

person Calvin    schedule 08.05.2012