2010-04-19 43 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呼叫。

相關問題