在我的ViewController底部,我有一个UIToolBar(myToolbar),因为我有一个UITextField(messageTxt)和一个按钮。当我尝试在messageTxt上写任何东西时,键盘出现但它隐藏了工具栏。因此,在我不关闭键盘之前,我不知道我输入了什么。 我正在寻找,当我开始打字时,我应该能够看到我正在打字。为此,也许可以使视图更小和更小在下面添加键盘或如何实现。
对于其他网站,我实现了以下但却无法看到我正在输入的内容。我可以在打字时看到这些建议,但不是我正在输入的内容。你能帮我知道我哪里出错了。我的代码是: -
在我的viewDidLoad方法中,为键盘添加了这两个通知。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
[super viewDidLoad];
通知方法的实施。
-(void) keyboardWillShow: (NSNotification *) notification {
UIViewAnimationCurve animationCurve = [[[notification userInfo] valueForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];
NSTimeInterval animationDuration = [[[notification userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect keyboardBounds = [(NSValue *) [[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:animationCurve];
[UIView setAnimationDuration:animationDuration];
[self.myToolBar setFrame:CGRectMake(30.0f, self.view.frame.size.height - keyboardBounds.size.height - self.myToolBar.frame.size.height, self.myToolBar.frame.size.width, self.myToolBar.frame.size.height)];
[UIView commitAnimations];
}
-(void) keyboardWillHide: (NSNotification *) notification {
UIViewAnimationCurve animationCurve = [[[notification userInfo] valueForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];
NSTimeInterval animationDuration = [[[notification userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGRect keyboardBounds = [(NSValue *) [[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:animationCurve];
[UIView setAnimationDuration:animationDuration];
[self.myToolBar setFrame:CGRectMake(0.0f, self.view.frame.size.height - 46.0f, self.myToolBar.frame.size.width, self.myToolBar.frame.size.height)];
[UIView commitAnimations];
}
最后添加了这个TextDelegate方法,以了解它何时具有焦点。
-(void) textFieldDidBeginEditing:(UITextField *)textField {
//[self.messageTxt setInputAccessoryView:self.myToolBar];
}
我的错误在哪里或我的代码中缺少什么? 还有一点,我希望实现TextField的TextView inlace - 因为我想要多行输入。我相信这是可能的,并且使用上面的TExtView实现也不会有任何问题。是否在View中添加了TextView和Button而不是ToolBar更好的选项,或者可以使用ToolBar很好地管理它?什么是更好的选择?
非常感谢任何帮助。感谢。
答案 0 :(得分:-1)
在视图didload方法中输入代码:
txtfield.inputAccessoryView = (Instance of your UIToolbar)
上面写的其他代码都可以。您应该在键盘出现之前设置AccessoryView,这样当键盘打开时将显示工具栏。