在UITableViewController中在3.0上摇晃

时间:2010-02-12 17:03:34

标签: iphone shake

在阅读了一些关于在3.0上实现抖动的帖子后,我想我明白了,但我没有接到任何电话:

motionBegan motionEnded motionCancelled

这是我读过的一个例子: how to detect and program around shakes for the iphone

我确定我添加了

[self becomeFirstResponder];

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

我应该为这些事件启用特殊委托吗?

据我所知,这些事件是由系统控制的,然后传递给第一响应者,继续......

任何想法?

感谢,

2 个答案:

答案 0 :(得分:1)

我有很多问题让这个工作,我终于放弃并遵循jandrea的建议。他建议继承UIWindow并在那里实现motionEnded。这是他的帖子here的引用,在相当远的地方寻找它。

  

首先,我将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模板的东西),进去   在那里改变你的班级   从UIWindow到的Window对象   MotionWindow或你叫的任何东西   它。保存xib。如果你设置了   UIWindow以编程方式使用您的   而是新的Window类。

     

现在您的应用正在使用专业版   UIWindow类。无论你想去哪里   被告知摇一摇,报名参加   他们通知!像这样:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deviceShaken) name:@"DeviceShaken" object:nil];
  

以观察者身份移除自己:

[[NSNotificationCenter defaultCenter] removeObserver:self];

答案 1 :(得分:0)

你在哪里打becomeFirstResponder?你应该在viewDidAppear中做到这一点。这会被解雇吗?