【发布时间】:2014-04-14 16:38:06
【问题描述】:
我们使用UIPickerView 来允许用户从选项列表中进行选择。我们将 UIPickerView 添加为容器 UIView 的子视图。然后我们将一个 UITapGestureRecognizer 添加到容器UIView。 UITapGestureRecognizer 被用来通过删除它的超级视图来关闭选择器。
在 iOS 7.0 和以前的版本中,这按预期工作。但是,在 iOS 7.1 中,这种设置不再有效,因为UITapGestureRecognizer 无法识别点击并调用操作中指定的选择器(关闭选择器视图和容器视图)。代码如下
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.nameList=[[NSMutableArray alloc] initWithObjects:@"A",@"B",@"C", nil];
UIPickerView *myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapInListPickerView:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[myPickerView addGestureRecognizer:singleTap];
[self.view addSubview:myPickerView];
}
-(void)tapInListPickerView:(UIGestureRecognizer *)sender
{
NSLog(@"Taped in pikcer view");
}
如果需要任何其他信息,或者如果有更好的方法可以做到这一点,请告诉我。
【问题讨论】:
-
请出示一些代码。
-
@Raptor 感谢您的回复,我在我的问题中添加了代码
-
7.1 beta 中报告了此问题。目前似乎还没有解决。
-
这绝对是一个错误。设置
numberOfTapsRequired=2确实按预期工作。
标签: uipickerview uitapgesturerecognizer ios7.1