更改选项卡式应用程序中的选项卡后,运动功能无效

时间:2013-06-08 07:37:58

标签: ios motion-detection

我很新。

我正在使用选项卡式应用程序。

我想要一个带有Shake功能的标签,其中包含

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (event.subtype   == UIEventSubtypeMotionShake)
    {
        NSLog(@"shook");
    }
}

这个工作完全正常,直到我从这个FirstViewController转到其他,然后回来。一旦我返回到FirstViewController,摇动功能似乎根本不起作用。任何想法?

我确实有以下其他组件

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

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

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

1 个答案:

答案 0 :(得分:1)

似乎每次在标签之间切换时都不会调用viewDidAppear:viewDidAppear for tabbar based apps

正如答案所示,实现UITabBarController委托 didSelectViewController 并调用视图控制器的viewDidAppear方法。

或者仍然实现委托,只检测所选的视图控制器,如果是FirstViewController,则调用方法 canBecomeFirstResponder

例如,如果您已将FirstViewController声明为选项卡栏的属性:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
  if ([viewController isKindOfClass:[FirstViewController class]]) {
      [viewController canBecomeFirstResponder];
  }
}