键盘隐藏了ipad中不同方向的文本字段 [英] keyboard hides textfield for different orientation in ipad

查看:116
本文介绍了键盘隐藏了ipad中不同方向的文本字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的iPad应用程序中,我有几个 textView textField的。当我点击 textField 时,键盘将覆盖 textField 。所以我正在实现以下代码来移动textview。但在轮换到 portraitUpsideDown 时,它无法正常工作。它以相反的方向向下滑动屏幕。那么我该如何解决这个问题?

In my iPad application, I have few textView and textField's. When I click on textField, the keyboard covers the textField. So I am implementing the below code to move the textview up. But on rotation to portraitUpsideDown its not working fine. It slides the screen down in opposite direction. So how do I solve this problem??

-(void) animateTextField: (UITextView *) textField up: (BOOL) up
{
    int txtPosition = (textField.frame.origin.y - 540);
    const int movementDistance = (txtPosition < 0 ? 0 : txtPosition); // tweak as needed
    const float movementDuration = 0.3f; // tweak as needed

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}

-(void)textViewDidBeginEditing:(UITextView *)textField
{
    [self animateTextField: textField up: YES];
}

-(void)textViewDidEndEditing:(UITextView *)textField
{
    [self animateTextField: textField up: NO];
}

-(BOOL)textFieldShouldReturn:(UITextView *)theTextField
{
    [theTextField resignFirstResponder];
    return YES;
}


推荐答案

你应该用键盘会显示并将隐藏通知以捕获键盘事件并相应地调整您的视图。

You should use keyboard will show and will hide notification to capture keyboard event and adjust your view accordingly.

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardDidHideNotification object:nil];

}

- (void)keyboardWillShow:(NSNotification *)notification {
    CGRect keyboardFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGFloat keyboardHeight = CGRectGetHeight(keyboardFrame);
    CGFloat animationDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];
    UIViewAnimationCurve animationCurve = [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue];
    UIViewAnimationOptions animationOption = animationCurve << 16;

    [UIView animateWithDuration:animationDuration delay:0 options:animationOption animations:^{
        // adjust height using keyboardHeight
    } completion:^(BOOL finished) {

    }];
}

- (void)keyboardWillHide:(NSNotification *)notification {
    CGRect keyboardFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGFloat keyboardHeight = CGRectGetHeight(keyboardFrame);
    CGFloat animationDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];
    UIViewAnimationCurve animationCurve = [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue];
    UIViewAnimationOptions animationOption = animationCurve << 16;

    [UIView animateWithDuration:animationDuration delay:0 options:animationOption animations:^{
        // adjust height using keyboardHeight
    } completion:^(BOOL finished) {

    }];
}

此博文详细解释了这一点

This blog post explains this in detail

http://charlie.cu.cc/2015/10/solution-to-the-ios-software-keyboard-cover-part-of-the-ui/

这篇关于键盘隐藏了ipad中不同方向的文本字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆