2010-04-19 45 views
0

我已经仔细检查了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。

+6

除了viewDidLoad中与内存相关的问题,如果loginTxt和pwdText连接到nib中的控件,为什么要在viewDidLoad中对它们执行alloc + init? – DyingCactus 2010-04-19 02:58:17

+0

该死的,我最初没有这些电话,但它可能不起作用,因为我的连接设置错了。我想测试一下,看看这是否是问题,所以我把它们放进去,并且在我重新创建一个新的nib文件后忘记删除它们。谢谢,这是问题! – 2010-04-19 04:23:34

回答

2

DyingCactus指出你的错误。您将用完全不同的控件替换控件的NIB版本,从而失去指向NIB中的控件的指针。当你打电话给resignFirstResponder时,你会在你的重复对象上调用它,而不是实际在屏幕上的那个。摆脱在NIB中连线的allocinit呼叫。

相关问题