所以我有一个基于 TabBarController 的应用程序,并且在我的一个选项卡中使用 UIAccelerometer。我看到的问题是我可以很好地访问和使用加速度计,直到我切换标签并切换回来。比如说我的加速度计在 tab1 上,然后我单击 tab2 并返回到 tab1 加速度计是关闭的。
在我的 ViewWillAppear 方法中,我将 viewcontroller 设置为 firstresponder,如下所示:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self becomeFirstResponder];
[accelerometer setDelegate:self];
...}
加速度计是视图控制器的实例变量。所以我在http://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/EventHandlingiPhoneOS.pdf阅读本指南,如果您将加速度计委托设置为零,手机将关闭它以节省电池生活。请注意,我从 viewWillDisappear: 方法中删除了那行代码,该方法现在非常小:
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
//commented out the line below and no dice
//[accelerometer setDelegate:nil];
if([[self tableView]isEditing])
[[self tableView]setEditing:NO];
[self resignFirstResponder];
}
细读 SO 和网络导致这方面的信息很少。我可以在这里提供的唯一其他信息是,如果我来回切换选项卡,我可以向后导航一页(它也有一个 navigationController 并且是导航中的最后一页)并转发加速度计然后正常工作。在我看来,它并没有真正将视图控制器设置为第一响应者。我希望有一些明显的我没有到达这里。任何帮助将非常感激!!!