jtu*_*lla 14 uigesturerecognizer ios ios6
显然,当你有一个手势识别器并且UIButton在同一个地方时,iOS 6会尝试自动处理这种情况,并为同一个手势激活.
当您想要单击按钮而不是激活手势识别器时,这种新的自动处理解决了这个问题,但是当您希望手势识别器动作时会产生新的问题.
在iOS 5中,您可以实现:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
Run Code Online (Sandbox Code Playgroud)
将行动转移到UIButton冲突时.
这似乎在iOS 6中不起作用.此外,反转此方法的行为(因为现在UIButton具有优先权而不是手势识别器)将无法工作.
完整方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIControl class]]){
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我这样做是为了解决这个问题,根据你的需要改变它:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
[self MyCommonSelector];// this will work for ios 5
return Yes;
}
Run Code Online (Sandbox Code Playgroud)
在您声明的按钮中添加目标,这将在iOS 6中调用:
[self.myButton addTarget:self action:@selector(MyCommonSelector)
forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
在这个方法中做你的东西,也可以在按钮点击和你需要调用的手势上调用:
-(void)MyCommonSelector
{
//Do your stuff here what you want to do with Gesture too.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6316 次 |
| 最近记录: |