我正在使用此代码进行摇动检测,并且大多数情况下都能正常工作:
- (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)上都会发生。从我有限的理解,我相信它与第一响应者有关,但我可能在那里错了!
答案 0 :(得分:2)
我设法回答了我自己的问题。对于可能有类似问题的其他人的参考,问题是一旦您单击webView中的链接(或编辑文本框或某些类似的操作),viewController就不再是第一个响应者。为了解决我的问题,答案是在新页面加载后再次使viewController成为第一个响应者:
- (void)webViewDidFinishLoad:(UIWebView *)nameOfWebView {
[self becomeFirstResponder];
}
答案 1 :(得分:0)
我有同样的问题,但在网页视图加载完成后成为第一个转发器并不能解决它。我知道在加载新页面时会调用webViewDidFinishLoad,并且当我通过点击它然后摇动或模拟摇动来聚焦Web视图时,我也知道调用了motionEnded。