看起来很简单,但我不知道为什么它不起作用。
在我的.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
消息,我可以看到BOOL设置正确(在范围内)功能)。
但是当我打电话给keyboardStatus
时,它总是记录“NO”
有什么想法吗?我已经搜索了其余的代码,我肯定没有在其他地方更改keyboardIsUp
的值。
答案 0 :(得分:2)
您确定要与对象的正确实例交谈吗?
即。将其添加到每个方法的开头:
NSLog(@"[%@(%p) %@]", self, self, NSStringFromSelector(_cmd));
如果十六进制数在keyboardWillHide/Show
和keyboardStatus
之间发生变化,那么您正在与不同的实例进行对话。如果没有,还会发生其他事情。
答案 1 :(得分:1)
也许你没有在同一个对象上调用它们?