jha*_*ott 18 uipangesturerecognizer ios7
我有一个平移手势识别器来向上,向下,向左或向右拖动面板.当无法使用平移的方向时,我不允许识别器开始,以便触摸可以转到面板内的其他UI元素.
但是,在iOS7上,翻译有时会在gestureRecognizerShouldBegin:我的手势处理程序之间重置handlePan:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer*)panGR
{
CGPoint trans = [panGR translationInView:self.view];
NSLog(@"should begin trans: (%.2f, %.2f)", trans.x, trans.y);
...
Run Code Online (Sandbox Code Playgroud)
这个日志: should begin trans: (18.00, 0.00)
- (void)handlePan:(UIPanGestureRecognizer*)panGR
{
CGPoint trans = [panGR translationInView:self.view];
switch(panGR.state)
{
case UIGestureRecognizerStateBegan:
NSLog(@"handlePan began trans: (%.2f, %.2f)", trans.x, trans.y);
...
Run Code Online (Sandbox Code Playgroud)
这个日志: handlePan began trans: (0.00, 0.00)
这意味着共享代码,以确定所述锅体(右,在这种情况下)工作在的方向gestureRecognizerShouldBegin:和允许的手势开始,但随后不能被确定handlePan:时,state是UIGestureRecognizerStateBegan.
这是iOS7中的错误还是故意改变行为以适应新的手势类型?此外,任何人都可以建议一个解决这个问题的好方法吗?
XOX*_*OXO -1
您可以通过检查水平平移是否高于或低于 0 来确定方向。handlePan:但最后handlePan:您需要将平移重置CGPoint为下一个平移的新参考。
- (void)handlePan:(UIPanGestureRecognizer*)panGR
{
CGPoint translation = [gr translationInView:self.view];
if (translation.x > 0) {
//Direction: Right
} else if (translation.x < 0) {
//Direction: Left
}
[gr setTranslation:CGPointZero
inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |