Как UIControl может передать все сенсорные события следующему объекту в цепочке респондента? - PullRequest
0 голосов
/ 21 августа 2009

Это сложно. У меня есть маленькая кнопка над очень большой. Когда маленькая кнопка на этой большой кнопке нажата, маленькая кнопка что-то делает. Но большой ничего не делает. Конечно. Но теперь я хочу, чтобы большая кнопка тоже что-то делала, независимо от того, была ли нажата маленькая кнопка или нет. Таким образом, маленькая кнопка должна перенаправлять все сенсорные события на эту большую кнопку. Какой самый простой способ сделать это?

Я знаю для UIView, но в UIControl есть свои собственные методы обработки касаний, отличные от UIView. В UIView это может выглядеть примерно так:

[self.nextResponder touchesBegan:touches withEvent:event];

Ответы [ 2 ]

0 голосов
/ 21 августа 2009

Возможно, стоит взглянуть на этот пост , который показывает способы синтеза сенсорных событий. Это перестал работать на некоторое время, хотя. Пересматривая его только сейчас, похоже, он обновил его для поддержки 3.0, так что он может работать для вас. Предостережение заключается в том, что оно может быть неприемлемым для приложения доставки.

Более простой способ - выделить метод, который выполняет работу (назовем его bigButtonWork), когда нажата большая кнопка, и сделать его общедоступным. Тогда обработчик касания большой кнопки просто вызывает эту процедуру. Когда маленькая кнопка нажата, вы можете выбрать внутри ее обработчика свое собственное дело или вместо этого вызвать bigButtonWork.

Но я предполагаю, что вы хотите, чтобы она имитировала нажатие большой кнопки (с выделениями и изменениями состояния), поэтому вам, возможно, придется идти по маршруту синтезированного события.

0 голосов
/ 21 августа 2009

Вы можете реализовать протокол, позволяющий большой кнопке получать сообщения от маленькой кнопки. Хотя я бы хотел, чтобы обе кнопки были в UIViewController, нужно, чтобы маленькая кнопка сообщала UIViewController, что она была нажата (либо с помощью селектора, либо протокола ), а затем UIViewController может обновить большую кнопку соответственно .... подробнее о протоколах здесь http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html

...