我有一个 UITextField,我在上面放了 UIPickerView。当用户点击 textfield 时,pickerview 会像键盘一样出现。我试图借助工具栏中的“完成”按钮删除 pickerview,但它没有这样做。下面是我的代码。
我曾尝试在网上寻找想法,但没有解决我的目的。谁能帮我解决这个问题,就像我在这里所缺少的一样。
-(void)pickerViewSetUp
{
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
NSLog(@"%f %f",screenWidth,screenHeight);
_myPickerView = [[UIPickerView alloc]init];
_myPickerView.delegate = self;
_myPickerView.dataSource = self;
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, screenWidth, 44)];
toolBar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(hidePicker)];
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[toolBar setItems:[NSArray arrayWithObjects:flexible,doneButton, nil]];
[_myPickerView addSubview:toolBar];
}
-(void)hidePicker
{
[_toss resignFirstResponder];
}
- (void)textFieldDidBeginEditing:(UITextField *)textField;
{
if (textField == _toss)
{
_toss.inputView = _myPickerView;
}
}
解决方案
作为临时解决方案,我使用了点击手势,因此当用户从选择器 View 中选择并点击屏幕时,选择器 View 消失了。下面是我的代码: 内部 viewDidLoad
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePicker)];
[self.view addGestureRecognizer:tap];
然后
-(void)hidePicker
{
[_toss resignFirstResponder];
}
我仍然很想解开完成按钮不隐藏我的 pickerview 背后的谜团。
最佳答案
试着打电话
[self.view endEditing:YES];
在 -(void)hidePicker
关于ios - UIPickerView 完成按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27564346/