我已经仔细检查了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's touchDown
方法与backgroundTap
方法相关联。
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
因此键盘不会像预期的那样被删除。不知道为什么。
感谢您的帮助! 的Teja。
答案 0 :(得分:2)
DyingCactus指出了你的错误。您将使用完全不同的控件替换控件的NIB版本,丢失指向NIB中的指针。当你拨打resignFirstResponder
时,你会在你的重复对象上调用它,而不是实际在屏幕上的对象。摆脱对{NIB中有线连接的alloc
和init
调用。