我有这段代码默认隐藏UIPickerView:
- (void)viewDidLoad
{
[super viewDidLoad];
[_memberList setAlpha:0];
}
这个代码在点击按钮时显示UIPickerView:
- (IBAction)buttonChooseMember {
[UIView animateWithDuration:0.6 delay:0. options:UIViewAnimationOptionCurveEaseInOut animations:^{
[_memberList setAlpha:1];
} completion:nil];
}
最后一件事是,当用户点击任何地方时隐藏键盘:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UIView * txt in self.view.subviews){
if ([txt isKindOfClass:[UITextField class]]) {
[txt resignFirstResponder];
}else if ([txt isKindOfClass:[UIPickerView class]]) {
[UIView animateWithDuration:0.6 delay:0. options:UIViewAnimationOptionCurveEaseInOut animations:^{
[_registerMLMList setAlpha:0];
} completion:nil];
}
}
}
但所有这些只是给我'出现'动画,因为它只是将Alpha值从0改为1(反之亦然)。不像iOS键盘那样向上滑动或向下滑动。
我尝试使用下面的动画在UIPickerView上显示iOS键盘外观:
- (IBAction)hidePicker {
UIPickerView *pickerView = [[UIPickerView alloc] init]; // default frame is set
float pvHeight = pickerView.frame.size.height;
float y = _screen.bounds.size.height - (pvHeight * -2); // the root view of view controller
[UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
self.picker.frame = CGRectMake(0 , y, pickerView.frame.size.width, pvHeight);
} completion:nil];
}
- (IBAction)showPicker {
UIPickerView *pickerView = [[UIPickerView alloc] init]; // default frame is set
float pvHeight = pickerView.frame.size.height;
float y = _screen.bounds.size.height - (pvHeight); // the root view of view controller
[UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
self.picker.frame = CGRectMake(0 , y, pickerView.frame.size.width, pvHeight);
} completion:nil];
}
我喜欢这个动画,它看起来像iOS键盘动画,但这个动画的问题是......当我的应用程序加载时,UIPickerView已经出现了。如何在第一次加载时隐藏它?
谢谢。答案 0 :(得分:18)
所有UIResponder
个对象都有inputView
属性。 inputView
的{{1}}是响应者becomes the first responder时将显示代替键盘的视图。
因此,如果您希望显示UIResponder
而不是键盘,则可以通过让UIPickerView
(如UIResponder
)拥有UITextField
来完成此操作作为UIPickerView
。
(作为一个警告:你可能不会想要inputView
作为UIPickerView
,因为你还需要考虑键盘何时会改变大小,就像旋转时一样。但是这一般的想法。)
答案 1 :(得分:1)
在viewDidLoad
中取一个布尔变量并将其值设置为TRUE
,并设置UIPickerView
的帧,以便UIPickerView
第一次不可见。基于布尔值处理帧动画以显示或隐藏选择器视图。
答案 2 :(得分:1)
hidepicker和showpicker方法的想法很好,并且可以通过设置UIPickerView的框架同时启动它到不应该可见的位置来克服“UIPicker在加载应用程序时可见”的问题。 。之后你可以调用showpicker方法来显示选择器视图。