Anu*_*pam 35 uipickerview uitapgesturerecognizer ios7.1
我们使用a UIPickerView来允许用户从选项列表中进行选择.我们将添加UIPickerView为容器UIView的子视图.然后我们将UITapGestureRecognizer添加到容器中UIView.在UITapGestureRecognizer正在使用经不起它的超级视图关闭该选择器.
在iOS 7.0及以前的版本中,这是按预期工作的.但是,在iOS 7.1中,此设置不再起作用,UITapGestureRecognizer即无法识别tap并调用操作中指定的选择器(取消选择器视图和容器视图).代码如下
- (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");
}
Run Code Online (Sandbox Code Playgroud)
如果需要任何其他信息或者有更优选的方法,请告诉我.
ZDi*_*ier 87
我遇到了同样的问题,我终于有了一个启示:P
就像uiPickerView上的同步手势重新识别器不起作用.
所以我使用手势委托
<
UIGestureRecognizerDelegate>
Run Code Online (Sandbox Code Playgroud)
同
// add tap gesture
UITapGestureRecognizer* gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pickerViewTapGestureRecognized:)];
[picker addGestureRecognizer:gestureRecognizer];
gestureRecognizer.delegate = self;
Run Code Online (Sandbox Code Playgroud)
同
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
// return
return true;
}
Run Code Online (Sandbox Code Playgroud)
然后它的工作!
再见
| 归档时间: |
|
| 查看次数: |
11058 次 |
| 最近记录: |