单击屏幕时如何在iOS7中关闭UIPickerView

时间:2014-07-17 02:32:54

标签: xcode ios7 uipickerview dismiss

我对UIPickerView有疑问。

我构建了UIPickerView,选择器弹出正常,

但是当我点击屏幕时我需要关闭选择器视图。

但是当我点击屏幕时,选择器已经解散,但是仍然保留了背景灰色视图(?)。

像这样: enter image description here

我的零件代码在这里

    dataAry = [[NSArray alloc] initWithObjects:@"test1",@"test2",@"test3",@"test4",@"test5", nil] ;

    pickerView = [[UIPickerView alloc] initWithFrame:CGRectZero];
    pickerView.delegate = self;
    pickerView.dataSource = self;
    pickerView.showsSelectionIndicator = true;
    _myTF.inputView = pickerView;

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideThePicker)];
    tapGesture.delegate = self;
    tapGesture.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:tapGesture];

    }

    -(IBAction)hideThePicker {

    pickerView.frame = CGRectMake(0, 480, 320, 260);
    }


    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    {
        return 1;
    }

    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger) row forComponent:(NSInteger)component
    {



        return dataAry[row];
    }

    - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:        (NSInteger)component
    {
        return [dataAry count];
    }

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:        (NSInteger)component
    {
        NSLog(@"dataAry selected:%ld", row);
    }

有人告诉我,当我触摸屏幕时,如何完全取消选择视图?

非常感谢你。

我的test pickerview完全代码在这里: git:https://github.com/dickfala/pickerViewTest.git

1 个答案:

答案 0 :(得分:0)

你为什么不用 -

-(IBAction)hideThePicker {
    [_myTF resignFirstResponder];
    pickerView.hidden = YES;
}

您只需使用其“隐藏”属性即可隐藏UIPickerView

编辑 -

检查上面的更新答案,您还必须重新签名文本字段响应者。