0

我有 3 个 UIExfield,用户可以填写前两个,但最后一个是类别字段,单击时显示 UIPickerView。

到目前为止,我设法做的是:

  • 用户单击分类文本字段 -> 出现选择器视图
  • 然后用户点击另一个文本字段 - >选择器视图消失并且键盘出现

但是知道当用户再次单击类别文本字段并显示选择器视图时,我想隐藏键盘。

这是我到目前为止所拥有的:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if(textField == categoryTextField){
        [categoryTextField resignFirstResponder];
        [UIView beginAnimations:@"picker" context:nil];
        [UIView setAnimationDuration:0.3];
        pickerView.transform = CGAffineTransformMakeTranslation(0,-236);
        [UIView commitAnimations];
    }else{
        [UIView beginAnimations:@"picker" context:nil];
        [UIView setAnimationDuration:0.3];
        pickerView.transform = CGAffineTransformMakeTranslation(0,236);
        [UIView commitAnimations];
    }
}

但它不起作用。任何想法为什么?

4

2 回答 2

2

你太难了 将选取器视图设置为文本字段的输入视图,操作系统将为您处理动画。随着每个字段成为第一响应者,将显示适当的输入视图(文本字段的默认键盘,第三个字段的选择器)。你不需要自己做任何动画。

于 2012-05-12T12:00:43.137 回答
0

我真的不明白你的问题来自哪里。我认为您的翻译可能会使pickerView 移动得太远。你应该试试:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if(textField == categoryTextField){
        [categoryTextField resignFirstResponder];
        [UIView beginAnimations:@"picker" context:nil];
        [UIView setAnimationDuration:0.3];
        CGRect frame = pickerView.frame;
        frame.origin.y = 480 - 236; // assuming your on an iPhone and your picker appears from bottom
        pickerView.frame = frame;
        [UIView commitAnimations];
    }else{
        [UIView beginAnimations:@"picker" context:nil];
        [UIView setAnimationDuration:0.3];
        CGRect frame = pickerView.frame;
        frame.origin.y = 480; // assuming your on an iPhone and your picker disappears to bottom
        pickerView.frame = frame;
        [UIView commitAnimations];
    }
}

希望有帮助

于 2012-05-12T11:39:15.317 回答