2010-08-30 4 views
3

У меня есть серия подклассов UIView, которые добавляются в виде подзонов. Каждое подобие можно перетаскивать и отбрасывать. Когда они отбрасываются (затрагиваются Ened), мне нужно запустить метод в viewController, чтобы выполнить некоторую работу. В настоящее время у меня есть touchEvents в каждом классе subview. Должен ли я обрабатывать эти события касания в viewController или должен ли я передавать указатель на родительский viewController в качестве свойства каждого класса, который я добавил как subviews?Обработка логики событий касания в Subview или ViewController

ОБНОВЛЕНИЕ: Или это работа для NotificationCenter?

ответ

4

UIViewController - это подкласс UIResponder, и экземпляры автоматически вставляются в цепочку ответчиков за просматриваемыми ими видами. В результате вы можете реализовать те же методы событий в подклассах UIViewController, как в подклассах UIView, и они будут «просто работать»; то есть они будут вызваны автоматически.

Итак, если ваш контроллер просмотра должен ответить на -touchesEnded:withEvent:, просто реализуйте метод непосредственно в подклассе UIViewController. Если представление также должно что-то сделать в ответ на событие, вы всегда можете отправить ему сообщение из своей -touchesEnded:withEvent: (или что-то еще).

1

Возможно, вы попробуете делегировать необходимое событие обработки касания от вашего подкласса uiview к uiviewcontroller с использованием протокола делегата. Контроллер представления может устанавливать себя как делегат, поскольку он создает экземпляры или добавляет каждое подвью.

В парадигме MVC, если вы хотите обрабатывать касание, характерное для внутренних элементов V-вида (вид/расположение кнопки), тогда вы можете обращаться с этим прикосновением в представлении V, но если касание воздействует на какое-то состояние снаружи (это положение в большем окне и т. д.), вы можете передать обработку, которая доходит до контроллера C, чтобы установить состояние в модели M.

Смежные вопросы