0

我有一个注册表单,其中使用了大约 7 个文本字段。但是当我开始输入值时,键盘隐藏了较低的 3 个字段。我想向上移动我的视图,但不是通过使用滚动视图。请告诉我任何解决方案。谢谢。

4

1 回答 1

0

注册键盘显示和隐藏通知。

- (void)registerForKeyboardNotifications {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification object:nil];
}

--

现在在- (void)keyboardWasShown:(NSNotification*)iNotification方法中,使用获取键盘大小

     NSDictionary *anUserInfo = [iNotification userInfo];
     CGSize aKeyboardSize = [[anUserInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

根据设备是 iPhone 5 或 iPhone 4,也获取屏幕尺寸。

现在您将能够确定隐藏字段和视图必须向上滑动以使隐藏字段可见的距离。

使用- (BOOL)textFieldShouldBeginEditing:(UITextField *)textFieldTextField 的委托。每次,一个隐藏的文本字段即将被编辑,计算它应该向上移动到可见的距离。

获得距离后,为视图设置动画以向上移动。

如何向上移动:

    CGFloat aDistanceToMakeFieldVisible = 50.0; //you have to calculate this
    [UIView animateWithDuration:0.5 animations:^{
        CGRect aFrame = self.view.frame;
        aFrame.origin.y -= aDistanceToMakeFieldVisible;
        self.view.frame = aFrame;
    } completion:^(BOOL finished) {
    }];

不要忘记动画下来...

于 2013-09-13T04:21:30.957 回答