我已经仔细检查了 nib 文件中的所有连接。我的代码-
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"iphone_bg_login.png"]];
self.title = @"Login screen";
loginTxt = [[UITextField alloc] init];
pwdText = [[UITextField alloc] init];
loginFailedTxt = [[UILabel alloc] init];
loginBtn = [[UIButton alloc] init];
navAppDelegate = (NavAppDelegate *)[[UIApplication sharedApplication] delegate];
navAppDelegate.navController.navigationBarHidden = YES;
//NSArray *subVs = (NSArray *) [self.view subviews];
[super viewDidLoad];
}
我使用了 UIView (UIControl)
的子类,并在界面生成器中向其添加了所有 UI 元素。UIControl 的 touchDown
方法连接到 backgroundTap
方法。
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
所以键盘并没有像预期的那样被移除。不知道为什么。
感谢您的帮助! 泰迦。
最佳答案
DyingCactus 指出了您的错误。您正在用完全不同的控件替换控件的 NIB 版本,从而丢失了指向 NIB 中的控件的指针。当您调用 resignFirstResponder
时,您是在重复的对象上调用它,而不是实际在屏幕上的对象。摆脱对 NIB 中连接的事物的 alloc
和 init
调用。
关于iphone - UITextField resignFirstResponder 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664952/