1

我正在使用 UIPickerView 让用户从几个选项中进行选择,当我显示选择器时,我滚动到最后一个选定的行。

当用户选择一行时,我希望始终关闭选择器(即使用户点击已选择的行),我也会在didSelectRow方法中关闭选择器。

问题是,如果用户重新选择所选行,didSelectRow则不会调用该方法,因此我无法关闭选择器。

4

1 回答 1

2

一种解决方案是创建 UIPickerView 的子类并覆盖该touchesEnded:withEvent:方法:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    // dismiss the picker view here, either directly, or you could notifiy
    // the delegate with a custom message:
    if ([self.delegate respondsToSelector:@selector(pickerViewShouldDismiss:)]) {
        [self.delegate pickerViewShouldDismiss:self];
    }
}

或者你可以添加UITapGestureRecognizer一个UIPickerView

UITapGestureRecognizer *tapGR = [UITapGestureRecognizer alloc] initWithTarget:self
                                 action:@selector(pickerViewTapped];
[pickerView addGestureRecognizer:tapGR];

进而:

- (void)pickerViewTapped {
    // dismiss the picker.
}

UIPickerView尽管这不会干扰处理水龙头的方式,但我不确定 100% 。

于 2012-08-26T15:42:17.917 回答