我很新。
我正在使用选项卡式应用程序。
我想要一个带有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];
}
答案 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];
}
}