0

したがって、TabBarController に基づくアプリケーションがあり、タブの 1 つで UIAccelerometer を使用しています。私が見ている問題は、タブを切り替えて元に戻すまで、加速度計に問題なくアクセスして使用できることです。たとえば、加速度計がタブ 1 にあり、タブ 2 をクリックしてタブ 1 に戻り、加速度計がオフになっているとします。

私のViewWillAppearメソッドでは、viewcontrollerをfirstresponderとして次のように設定しています:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[self becomeFirstResponder];

[accelerometer setDelegate:self];
...}

accelerometer は、viewcontroller のインスタンス変数です。だから私はhttp://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/EventHandlingiPhoneOS.pdfこのガイドを読んでいました。加速度計のデリゲートをnilに設定すると、電話はバッテリーを節約するためにオフになります生活。そのことに注意して、viewWillDisappear: メソッドからそのコード行を削除しましたが、これはかなり小さくなっています。

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
    //commented out the line below and no dice
    //[accelerometer setDelegate:nil];

if([[self tableView]isEditing])
    [[self tableView]setEditing:NO];
[self resignFirstResponder];

}

SO とネットを熟読しても、これに関する情報はほとんど得られません。ここで私が提供できる唯一の他の情報は、タブを前後に切り替えると、1 ページ後方にナビゲートし (navigationController も取得し、ナビゲーションの最後のページです)、加速度計を前方に移動して正常に動作することです。ビューコントローラーをファーストレスポンダーとして実際に設定していないように思えます。ここに来ていない明らかな何かがあることを願っています。どんな助けでも大歓迎です!!!

4

1 に答える 1

0

したがって、viewControllerのviewDidAppearメソッドとviewDidDisappearメソッドをオーバーライドする必要があることがわかりました。

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

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

これを行った後、viewControllerを切り替えた後にmotionBeganが呼び出されました。これが誰かに役立つことを願っています...

于 2011-07-23T15:33:42.747 に答える