我的接口(interface)文件中有这个:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDataSource>
// PickerView Array
@property (strong, nonatomic) NSArray *pickerNames;
@property (strong, nonatomic) NSArray *pickerValues;
@property (strong, nonatomic) IBOutlet UIPickerView *picker;
- (IBAction)buttonSelectPicker;
@end
我的实现文件中有这个:
- (void)viewDidLoad
{
[super viewDidLoad];
// PickerView Array
_pickerNames = @[@"Data1", @"Data2", @"Data3", @"Data4", @"Data5"];
_pickerValues = @[@"val1", @"val2", @"val3", @"val4", @"val5"];
_picker.frame = CGRectMake(0, 1000, 320, 216);
}
所有这些代码现在都可以在我的 iPod (iOS 6.1.3) 上完美运行,但实际上我想做更多的事情时遇到问题......它们是......
第一次加载应用时,UIPickerView 被隐藏(在屏幕区域之外)。我尝试通过添加这一行(在 viewDidLoad
上)但它不起作用。
_picker.frame = CGRectMake(0, 1000, 320, 216);
然后当用户点击 buttonSelectPicker
按钮时,UIPickerView 就会出现。这行代码也不起作用:
- (IBAction)buttonSelectPicker {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
_pickerviewContainer.frame = CGRectMake(0, 289, 320, 216);
[UIView 提交动画];
}
当用户点击 UIPickerView 区域外的任何地方时,它会隐藏 UIPickerView。我有这段代码可以关闭键盘,但我不知道如何修改以关闭 UIPickerView :
- (void)touchesBeganNSSet *)touches withEventUIEvent *)event {
for (UIView * txt in self.view.subviews){
if ([txt isKindOfClass:[UITextField 类]]) {
[txt resignFirstResponder];
}
}
}
谢谢...
您基本上是在重新创建 inputView
所做的事情。 UIKit 允许你定义任何自定义输入法,不仅仅是键盘,因此,你可以放置一个 UITextField
,并设置 inputView
如下:
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 162)];
picker.dataSource = self;
picker.delegate = self;
self.textField.inputView = picker;
(选择器也可以从 Nib 加载)
然后你使用普通的方法来处理文本字段
// Show keyboard/picker
[self.textField becomeFirstResponder]
// Dismiss keyboard/picker
[self.textField resignFirstResponder]
当文本字段成为第一响应者时,将显示选择器而不是键盘。我不知道这是否适合您的需求,但请考虑将其作为一种替代的、更清洁的方式。
关于ios - UIPickerView 动画隐藏和显示失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778674/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |