iOS UIToolBar隐藏在键盘上

时间:2014-08-16 06:42:41

标签: ios keyboard uitextfield uitextview uitoolbar

在我的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很好地管理它?什么是更好的选择?

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:-1)

在视图didload方法中输入代码:

txtfield.inputAccessoryView = (Instance of your UIToolbar)

上面写的其他代码都可以。您应该在键盘出现之前设置AccessoryView,这样当键盘打开时将显示工具栏。