2010-11-07 99 views
0

我有一個UITextField,當鍵盤移入/移出時,它可以向上/向下移動視圖。iPad鍵盤,UITextField,奇怪的行爲

- (IBAction)moveUp; 
- (IBAction)moveDown; 

我通過「編輯確實開始」和下降「真的結束在退出」(這是我在某個線程發現這裏的StackOverflow)移動視圖了。

但是,當按鈕(右下角)「隱藏鍵盤」被擊中時,視圖不會向下移動。 這顯然確實迴應了「編輯完成」。

奇怪的是,如果我還連接「編輯真的結束」來下移,方法下移將被調用2倍(並移至遠了屏幕!)
如果我再diconnect-CONNECT「真的結束退出時「,該視圖不會像以前那樣點擊」返回「按鈕消失。

任何想法這裏出了什麼問題?

//斯特凡

回答

0

而不是使用「編輯確實開始」和「編輯真的結束就退出」,這是由UIControl定義,我建議你用指定一個代表爲您的文本字段,並使用textFieldDidEndEditing:由UITextFieldDelegate協議定義的方法。我相信這會在你想要的時候開火。

+0

還是一樣的奇怪行爲。我只是通過解決方法來解決它。我會打電話給textFieldShouldReturn:除了別的,只是辭去第一個響應者。所有其他必要的任務將在textFieldDidEndEditing中處理:因爲無論如何都會調用它。但是,textFieldShouldReturn:必須可用!不會試圖去理解它。現在它可以工作。 §$「!! @&! – Stef 2010-11-13 20:37:24

0

確保您連接到「退出結束」,而不是「編輯Sid結束」。這些名字有點混亂。

1

而不是連接您的方法來控制文本字段上的事件,您應該激發您的方法來響應兩個通知,UIKeyboardDidShowNotificationUIKeyboardDidHideNotification。只需在-viewDidLoad中將自己添加爲這些通知的觀察者,然後在-viewDidUnload中刪除自己。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
    [notificationCenter addObserver:self selector:@selector(moveUp) name:UIKeyboardDidShowNotification object:nil]; 
    [notificationCenter addObserver:self selector:@selector(moveDown) name:UIKeyboardDidHideNotification object:nil]; 
} 

- (void)viewDidUnload 
{ 
    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
    [notificationCenter removeObserver:self name:UIKeyboardDidShowNotification object:nil]; 
    [notificationCenter removeObserver:self name:UIKeyboardDidHideNotification object:nil]; 
}