качая на 3.0 в UITableViewController - PullRequest
       10

качая на 3.0 в UITableViewController

0 голосов
/ 12 февраля 2010

после прочтения некоторых постов о реализации встряхивания на 3.0, я думаю, что у меня есть идея, но я не получаю никакого вызова:

motionBegan motionEnded motionCancelled

это пример того, что я прочитал: как обнаруживать и программировать сотрясения для iphone

Я уверен, что я добавил

[self becomeFirstResponder];

и

-(BOOL)canBecomeFirstResponder {
NSLog(@"First responder");
return YES;
}

Должен ли я включить специального делегата для этих событий?

Я понимаю, что эти события контролируются системой, и они передаются первому респонденту и продолжаются ...

есть идеи?

спасибо,

* * 1 022 г.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

У меня было множество проблем, чтобы заставить это работать, и я наконец сдался и последовал совету Джандреа. Он предложил создать подкласс 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];
0 голосов
/ 12 февраля 2010

Куда вы звоните becomeFirstResponder?Вы должны сделать это в viewDidAppear.Это уволено?

...