2014-10-18 18 views
0

我在嘗試同步動畫時,在選擇文本字段後向上移動鍵盤時遇到了奇怪的錯誤。 具體來說,我試圖讓鍵盤的高度,以瞭解有多少了通過使用下面的代碼爲keyboardwillshow通知註冊後,移動文本字段:ios keyboardwillshow通知發射遲到

- (void)keyboardWillShow:(NSNotification *)notification 
{ 
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
self.keyboardHeight = keyboardSize.height; 
[self moveToolbarUp]; 
} 

-(void)moveToolbarUp 
{ 
self.keyboardExpanded = YES; 
CGRect frame = self.toolbar.frame; 
DLog(@"keyboard height now:%f",self.keyboardHeight); 
frame.origin.y = (self.view.frame.size.height-toolbarHeight-self.keyboardHeight); 
[UIView animateWithDuration:0.1 animations:^{ 
    self.toolbar.frame = frame; 
}]; 
} 

但是,如果我嘗試在keyboardwillshow方法中設置一個斷點,我可以看到當調用該方法時鍵盤已經一路向上,並且動畫因此被延遲(鍵盤彈出,然後是第二秒左右,緊接着文本字段) 。 有沒有人經歷過這個錯誤?我正在運行iPhone 5s,iOS 8.0.2。

謝謝!

回答

0

這不是一個錯誤。事實是,你可以刪除你的animateWithDuration電話。在iOS 8中,keyboardWillShow:在鍵盤的動畫內部被稱爲。你不需要同步任何東西;你做的任何事情都將自動成爲動畫的一部分。

+0

嗯我試過,但它仍然沒有在正確的時間動畫。整個鍵盤會一直向上,然後textfield會在第二個左右之後。它適合你嗎? – user3172100 2014-10-18 20:41:08

+0

是的,但我有點不清楚你想要做什麼。 「一秒鐘之後」聽起來有點長,但是在文本字段或滾動視圖中,在鍵盤完成動畫到位之後,它正常滾動。我不認爲這是令人反感的。該項目顯示了一個典型的策略:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch10p522textFieldScrollView/ch23p805textFieldSliding/ViewController.swift – matt 2014-10-18 23:07:30