1

単純なようですが、なぜ機能しないのかわかりません。

私の .h ファイルでは、次のように宣言しました。BOOL keyboardIsUp;

そして、私の .m ファイルで:

-(void)keyboardWillShow {

    NSLog(@"before:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    NSLog(@"keyboardWillShow");
    keyboardIsUp = YES;

    NSLog(@"after:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    ...
}

-(void)keyboardWillHide {

    NSLog(@"before:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    NSLog(@"keyboardWillHide");
    keyboardIsUp = NO;

    NSLog(@"after:");
    NSLog(keyboardIsUp? @"Yes" : @"No");

    ...
}

-(BOOL)keyboardStatus{
    NSLog(@"keyboardStatus");

    NSLog(keyboardIsUp? @"Yes" : @"No");

    return keyboardIsUp;
}

メソッドは間違いなく正しく呼び出されており (これは NSLog メッセージから確認できます) NSLog、最初の 2 つのメソッド内のメッセージで、BOOL が (関数の範囲内で) 正しく設定されていることがわかります。

しかし、私が呼び出すとkeyboardStatus、常に「NO」と記録されます

何か案は?コードの残りの部分を精査しましたが、他の場所の値は絶対に変更していませkeyboardIsUpん。

4

2 に答える 2

2

オブジェクトの正しいインスタンスと話していることを確認しますか?

つまり、これを各メソッドの先頭に追加します。

NSLog(@"[%@(%p) %@]", self, self, NSStringFromSelector(_cmd));

16進数がとの間keyboardWillHide/Showで変化する場合はkeyboardStatus、別のインスタンスと話していることになります。そうでない場合は、他のことが起こっています。

于 2012-08-15T17:12:17.080 に答える
1

たぶん、あなたはそれらを同じオブジェクトで呼んでいないのですか?

于 2012-08-15T17:12:26.293 に答える