2

私はかなり新しいです。

私はタブ付きアプリケーションに取り組んでいます。

シェイク機能付きのタブの1つが欲しかったので、組み込みました

- (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];
}
4

1 に答える 1

1

タブを切り替えるたびにviewDidAppearが呼び出されないようです:タブバーベースのアプリのviewDidAppear

そこでの回答で示唆されているように、UITabBarController デリゲートdidSelectViewControllerを実装し、ビュー コントローラーの viewDidAppear メソッドを呼び出します。

または、引き続きデリゲートを実装し、選択されたビュー コントローラーを検出するだけで、それが FirstViewController の場合はメソッドcanBecomeFirstResponderを呼び出します。

たとえば、FirstViewController をタブ バーのプロパティとして宣言した場合:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
  if ([viewController isKindOfClass:[FirstViewController class]]) {
      [viewController canBecomeFirstResponder];
  }
}
于 2013-06-08T15:50:16.800 に答える