0

我正在使用此代码进行抖动检测,并且在大多数情况下它工作正常:

    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
 if (event.type == UIEventSubtypeMotionShake) {
  if ( event.subtype == UIEventSubtypeMotionShake )
  {
   NSLog (@"Shake Called");
  }  
 }

我相信要使它起作用,我还需要使用这些,我有:

    - (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

- (void)viewDidDisappear:(BOOL)animated {
    [self resignFirstResponder];
    [super viewDidDisappear:animated];
}

这一切都很好,motionEnded每次我摇晃时都会调用它,直到我点击webView我程序中的链接。我可以在视图中上下滚动并且摇动仍然有效,但是一旦视图加载新页面,motionEnded当我摇动时停止被调用。这发生在模拟器和真实设备(iPhone 3G、iOS4)上。根据我有限的理解,我相信这与急救人员有关,但我可能错了!

4

2 回答 2

2

我设法回答了我自己的问题。对于可能有类似问题的其他人的参考,问题是一旦您单击 webView 中的链接(或编辑文本框或某些类似操作),viewController 将不再是第一响应者。为了解决我的问题,答案是在新页面加载后让 viewController 再次成为第一响应者:

    - (void)webViewDidFinishLoad:(UIWebView *)nameOfWebView {
    [self becomeFirstResponder];
}
于 2010-06-30T11:53:41.943 回答
0

我有同样的问题,但是当网络视图完成加载时成为第一响应者并不能解决我的问题。我知道当加载新页面时会调用 webViewDidFinishLoad,并且我也知道当我通过点击它然后摇动或模拟摇动来聚焦 Web 视图时会调用motionEnded。

于 2010-10-28T12:59:52.490 回答