У меня есть вопросы, касающиеся обнаружения сотрясений, которые были опубликованы здесь ранее,
вот напоминание:
"Теперь ... Я хотел сделать что-то подобное (в iPhone OS 3.0+), только в моем случае я хотел, чтобы это было доступно для всего приложения, чтобы я мог предупреждать различные части приложения, когда происходит сотрясение. Вот что я закончил до дела.
Сначала я создал подкласс UIWindow. Это легко peasy. Создайте новый файл класса с интерфейсом, таким как MotionWindow: UIWindow (не стесняйтесь выбирать свой, естественно). Добавьте метод, например, так:
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.type == UIEventTypeMotion && event.subtype == UIEventSubtypeMotionShake) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"DeviceShaken" object:self];
}
}
Теперь, если вы используете 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];
Вопросы:
- где разместить уведомления (у меня есть приложение на основе просмотра)?
- Должен ли я удалить себя как наблюдателя, что это значит?
- что такое оператор if, который я использую, чтобы проверить, начислялся ли коктейль?
- как я могу узнать, что событие Shake знает, что оно "уже в процессе"?
спасибо.