我是新来的。
我正在做一个标签应用程序。
我想有一个标签与震动功能,合并
- (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];
}
}