2017-02-03 43 views
1

我有一個自定義視圖的xib文件,我有很多文本框子視圖。我已將每個文本字段上的代表設置爲文件所有者,併成功實現了texfield委託方法。但不幸的是鍵盤通知方法keyboardWillShow:和keyboardWillHide:根本沒有被調用。NS通知密鑰板將顯示和鍵盤將隱藏不叫

我在textfieldShouldBeginEditing處添加了觀察者,並在textFieldDidEndEditing處刪除了觀察者。

這裏是我的代碼片段:

添加觀察

-(void) textFieldShouldBeginEditing : (UITextField *) textField{ 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 
} 

刪除觀察者

-(void) textFieldDidEndEditing : (UITextField *) textField{ 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 
} 

//通知

方法
- (void)keyboardWillShow:(NSNotification *)notification 
{ 
NSLog(@"Here"); 
} 

- (void)keyboardWillHide:(NSNotification *)notification 
{ 
NSLog(@"There"); 
} 

//任何的那些keyboa rdwillShow和keyboardWillHide不會被調用。

如果有人能幫我弄清楚我的代碼或任何可能丟失的底層問題,這將是非常好的。

+0

鍵盤在'textFieldDidBeginEditing:'被調用之前顯示,導致'keyboardWillShow'永遠不會被調用。開始觀察,看看是否改變了什麼 – TheAmateurProgrammer

回答

0

您在通過編輯textView顯示鍵盤時添加觀察者。它不會調用,因爲鍵盤已經顯示。您應該在您的viewWillAppear中添加觀察員並刪除viewWillDisappear方法。

+0

我在keyboardShouldBeginEditing上添加了觀察者。對不起,我說didBeginEditing。此外,它只是一個xib文件,viewcontroller根據xib名稱實例化其他視圖,並且相同的xib可能不會在其父視圖控制器中實例化。 – RoshUn

+0

將其添加到'viewWillAppear'中。 –

+0

我只有awakeFromNib方法 – RoshUn