UIPickerView完成按钮不起作用

时间:2014-12-19 10:43:58

标签: ios objective-c

我有一个UITextField,我把它放在了UIPickerView上。当用户单击文本字段时,pickerview将像键盘一样显示。我试图在它的工具栏中的Done按钮的帮助下删除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;
    }
}

解决方案

作为临时解决方案,我使用了一个轻击手势,因此当用户从选择器视图中选择并点击屏幕时,选择器视图就会消失。以下是我的代码: 在viewDidLoad里面

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePicker)];
[self.view addGestureRecognizer:tap];

然后

-(void)hidePicker
{
    [_toss resignFirstResponder];
}

我仍然喜欢解决完成按钮背后的秘密而不是隐藏我的挑选视图。

2 个答案:

答案 0 :(得分:2)

尝试拨打

[self.view endEditing:YES];
-(void)hidePicker

中的

答案 1 :(得分:0)

没有得到你真正想做的事。 只是为了删除那个选择器 你能尝试一下:

  

[_myPickerView removeFromSuperview];

-(void)hidePicker

中的