UITextField resignFirstResponder不工作?
问题描述:
我已经仔细检查了nib文件中的所有连接。我的代码 -UITextField resignFirstResponder不工作?
// 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元素在界面中builder.The UIControl's touchDown
方法被连接到backgroundTap
方法。
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
因此,键盘不会像它应该去除。不知道为什么。
感谢您的帮助! Teja。
答
DyingCactus指出你的错误。您将用完全不同的控件替换控件的NIB版本,从而失去指向NIB中的控件的指针。当你打电话给resignFirstResponder
时,你会在你的重复对象上调用它,而不是实际在屏幕上的那个。摆脱在NIB中连线的alloc
和init
呼叫。
除了viewDidLoad中与内存相关的问题,如果loginTxt和pwdText连接到nib中的控件,为什么要在viewDidLoad中对它们执行alloc + init? – DyingCactus 2010-04-19 02:58:17
该死的,我最初没有这些电话,但它可能不起作用,因为我的连接设置错了。我想测试一下,看看这是否是问题,所以我把它们放进去,并且在我重新创建一个新的nib文件后忘记删除它们。谢谢,这是问题! – 2010-04-19 04:23:34