У меня было множество проблем, чтобы заставить это работать, и я наконец сдался и последовал совету Джандреа. Он предложил создать подкласс UIWindow и реализовать движение, округленное там. Это цитата из его поста здесь , ищите его довольно далеко внизу.
Сначала я создал подкласс UIWindow. Это
очень просто. Создать новый файл класса
с интерфейсом, таким как MotionWindow
: UIWindow (не стесняйтесь выбирать
собственный, естественно). Добавьте метод, например, так:
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"DeviceShaken" object:self];
}
}
Измените @ "DeviceShaken" на
Название уведомления по вашему выбору. Сохранить
файл.
Теперь, если вы используете MainWindow.xib
(на складе шаблон Xcode), зайдите в
там и поменяй класс своего
Объект Window из UIWindow в
MotionWindow или как вы там звонили
Это. Сохранить XIB. Если вы настроили
UIWindow программно, используйте ваш
вместо этого новый класс Window.
Теперь ваше приложение использует специализированный
UIWindow класс. Везде, где вы хотите
быть рассказанным о встряске, подписаться на
их уведомления! Как это:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deviceShaken) name:@"DeviceShaken" object:nil];
Чтобы удалить себя в качестве наблюдателя:
[[NSNotificationCenter defaultCenter] removeObserver:self];