在选项卡应用程序中更改选项卡后,运动功能不起作用



我是新来的。

我正在做一个标签应用程序。

我想有一个标签与震动功能,合并

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

这工作得很好,直到我tab从这个FirstViewController到其他,然后回来。一旦我返回到FirstViewController,震动函数似乎根本不起作用。任何想法?

我有其他组件如下

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

似乎viewDidAppear并不是每次切换选项卡时都被调用:

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

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

例如,如果你已经将FirstViewController声明为标签栏的属性:

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

最新更新