這是一個快速不偏好的方式來移動工具欄。我相信你能夠適應你的需求。
首先你要爲鍵盤通告
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
註冊,然後您移動工具欄了。喜歡這個。
- (void)keyboardWillShow:(NSNotification *)notification {
if (keyboardShown) {
return;
}
NSDictionary* info = [notification userInfo];
// Get the size of the keyboard.
NSValue* aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
CGRect currentFrame = self.toolbar.frame;
currentFrame.origin.y = currentFrame.origin.y - keyboardSize.height;
[UIView beginAnimations:@"ShowKeyboard" context:NULL];
[UIView setAnimationCurve:[[info objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
[UIView setAnimationDuration:[[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
self.toolbar.frame = currentFrame;
[UIView commitAnimations];
keyboardShown = YES;
}
當然
,你必須創建將隱藏鍵盤的另一種方法,但是這是基本相同,顯示鍵盤,所以我會忽略它。
爲了讓事情更容易一點,您可以製作「內容」視圖的工具欄和web視圖子視圖。然後,您可以調整contentview的高度,並自動調整餘量。
哦,你不應該調整的觀點只是因爲textFieldDidBeginEditing:
。我不知道iphone,但可以將外部鍵盤連接到ipad。而且,如果不顯示鍵盤,您可以調整視圖的大小,在底部留下一個大的空白幀。
很好的回答。但你也可以使用標籤值來找出哪些字段標籤 - 因此你可以使用'UITextViewDelegate'協議,沒有煩惱。 – 2011-02-23 08:05:11
實際上,發送textFieldDidBeginEditing方法的textfield將提供問題指針中的textfield作爲參數。你可以使用它來獲取你需要的所有信息。 – 2011-02-23 08:06:41
是的,如果您有多個文本字段,那麼您可以將您的控制器設置爲所有人的代表並使用該參數。儘管如此,捕捉NSNotification更好,因爲它會在任何時候通知您*鍵盤顯示的時間,而不僅僅是我們期望它顯示鍵盤的事件(例如,當成爲第一響應者時)。還要考慮@ fluchtpunkt關於iPad的觀點,不一定必須展示鍵盤來接受用戶輸入。 – arrtchiu 2011-02-23 08:31:37