Обнаружение встряхивания во всех контроллерах представления - PullRequest
2 голосов
/ 07 октября 2011

Возможно ли это в iOS, или мне действительно нужно регистрировать обнаружение встряхивания в каждом контроллере представления?

Я хочу, чтобы пользователь моего приложения мог встряхивать свой iPhone, чтобы вернуться в корневой каталог.Независимо от текущего вида контроллера.

Ответы [ 3 ]

1 голос
/ 07 октября 2011

Я сделал это, написав категорию на UIViewController. Таким образом, вам не нужно ничего создавать подклассами, вы можете реализовать это, даже если пользовательский интерфейс уже завершен.

В моей реализации VC будут реагировать на сотрясение , если только конкретный VC не отключил механизм. Отказ осуществляется путем установки BOOL ivar на NO в конкретной реализации. Механизм встряхивания будет искать этот ивар с помощью кодирования значения ключа и игнорировать дрожание, если ивар был установлен.

Я бы уточнил это, разрешив отвечать только VC, который в данный момент виден.

0 голосов
/ 07 октября 2011

Это всего лишь предположение, но, возможно, вы могли бы сделать это, создав подкласс UIApplication (не делегат вашего приложения, а само приложение). UIApplication является UIResponder, поэтому вы можете сделать его первым респондентом и предоставить для него метод motionBegan или motionEnded.

0 голосов
/ 07 октября 2011

отредактированное сообщение (старая информация была неправильной)

в вашем случае я бы написал свой собственный ViewController, подклассы которого UIViewController, реализует делегаты движения UIResponder и затемвызовите popToRootViewController для navigationController -объекта ViewController.И каждый раз, когда вы создаете новый ViewController, вы должны создавать подкласс вашего ViewCOntroller, а не UIViewController.Таким образом, каждый ViewController может получить Shake-событие, но оно записывается в ваш код только один раз:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...