我搜索过但找不到一种独特而恰当的方法

时间:2013-09-13 04:08:43

标签: ios6

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

1 个答案:

答案 0 :(得分: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的设备,也可以获得屏幕尺寸。

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

使用TextField的- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField委托。每次都要编辑一个隐藏的文本字段,计算它应该向上移动的距离。

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

如何向上移动:

    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) {
    }];

别忘了动画下来......