iOS5上的手势有一个很奇怪的问题。我有一个继承自UIControl的类。我实现了两个GestureRecognizer:UITapGestureRecognizer和UILongPressGestureRecognizer。这个类的对象应该是可拖动的,但只能在下载之后。当用户停止保持对象时,它应该回到原来的位置。iOS5上的UIGestureRecognizerDelegate和手势
双击手势后,对象应该开始下载:
- (void) handleTapGestureRecognizer:(UITapGestureRecognizer*)recognizer
{
[self loadingFiles:recognizer];
}
长按手势使用拖动对象,但之后下跌目标应该回到它的中心。
所以,我已经实现UIGestureRecognizerDelegate这样的:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
[self loadingFiles:gestureRecognizer];
return self.isLoaded;
}
else return YES;
}
在UIGestureRecognizerDelegate协议参考有写道:“gestureRecognizerShouldBegin”中的iOS 3.2及更高版本,但是当我在Xcode中使用ALT还有另外一个信息它仅在iOS6和更高版本中可用,为什么?该方法不在iOS5中调用。 所以在handleLongPressGestureRecognizer的beggining我写道:
- (void)handleLongPressGestureRecognizer: (UILongPressGestureRecognizer *)recognizer
{
if (!self.isLoaded)
{
[self loadingFiles:recognizer];
return;
}
else
{
(...)
}
}
而且在iOS6的一切工作完全正常,但在iOS5中,当我保存对象,并尝试将其移动,它不是在下载过程中移动(这很好),但在此之后,它正在改变中心,并冻结在最后一个地方,我保持我的手指。
我将不胜感激任何线索如何解决这个问题。
编辑:ANSWER
好的我找到了一个答案。也许这是不是最好的解决方案,但它工作: 在方法“loadingFiles”这就是所谓的“handleLongPressGestureRecognizer”方法开始我把:
- (BOOL) loadingFiles:(UIGestureRecognizer*)recognizer
{
if (!_isSelectable ||! self.isLoaded)
{
longPressGestureRecognizer.enabled = NO;
(...)
}
}
而当标志isLoaded是YES有变化:
longPressGestureRecognizer.enabled = YES;
感谢您的回复。 那么我应该怎么做才能调用这个方法呢?现在不叫它。 – malgorzata 2013-05-16 11:48:59
我似乎忘记了情节。 “使这种方法被称为”是什么意思? – matt 2013-05-16 16:49:32