Я пытаюсь обнаружить, когда пользователь коснется вниз и вверх в представлении. В представлении содержатся некоторые кнопки и другие элементы управления UIKit. Я хотел бы обнаружить эти события касания, но не уничтожить их.Обнаружение касания и касания в представлении, содержащем UIControls
Я попробовал два подхода, но и не был достаточно:
Сначала я добавил прозрачную накладку переопределяет -touchesBegan: withEvent: и -touchesEnded: withEvent: вперед и событие к следующему ответчику с
[self.nextResponder touchesBegan:touches withEvent:event]
Однако, кажется, что объекты UIKit игнорируют все пересылаемые события.
Далее, я попробовал переопределить -pointInside: withEvent: and -hitTest: withEvent:. Это отлично работает, чтобы обнаружить прикосновение вниз событий, но pointInside :: и hitTest :: не вызываются при прикосновении до (т. Е. [[[All event] anyObject] phase] никогда не совпадает с UITouchPhaseEnded).
Каков наилучший способ определить как прикосновение, так и прикосновение к событиям, не нарушая взаимодействия с базовыми UIControls?
Я не вижу причин, по которым ответчик будет игнорировать 'touchhesBegan: withEvent:' просто потому, что он был отправлен еще что-то с тем же событием. Это бросает вызов точке цепи ответчиков. Вы уверены, что 'nextResponder' что-то возвращает? –
@Peter «Классы UIKit framework не предназначены для получения касаний, которые не привязаны к ним, в программных терминах это означает, что свойство view объекта UITouch должно содержать ссылку на объект рамки для прикосновения Если вы хотите условно переадресовать касания другим респондентам в вашем приложении, все эти респонденты должны быть экземплярами ваших собственных подклассов UIView ». (http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html) – tba