我正在使用UILongPressGestureRecognizer类来处理是否正在选择一个项目。UILongPressGestureRecognizer停止触摸不停止触摸
逻辑如下:用户在1秒内按下一个项目(UIView子类)。一旦检测到手势,该项目就会突出显示并可移动。
用户必须在屏幕上移动此项目而不停止触摸它。
我面临的问题是手势识别阴影touchesBegan /移动/结束需要项目类来安排运动。
我试图删除检测到的手势,并检测到选中的项目。但仍然将消息发送到手势的句柄而不是调用触摸方法。
任何人都知道任何方式来停止“聆听”手势识别器而不留下屏幕的手指?
谢谢。
下面的代码:
-(void)addGestures
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = iItemLongPressTime;
[self addGestureRecognizer:longPress];
[longPress release];
}
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
}
else {
if (self.isSelected) return;
if ([delegate respondsToSelector:@selector(singleTouch:)])
[delegate singleTouch:self];
[self removeGestureRecognizer:[self.gestureRecognizers objectAtIndex:0]];
NSLog(@"Long press detected.");
}
}
正如你可以在其他分公司的委托调用使各项程序选择,以纪念这个项目看,并随即删除的识别。
我失踪了什么?
- 编辑 -
完成!这工作:
#pragma mark Gesture Functions
-(void)addGestures
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = iItemLongPressTime;
[self addGestureRecognizer:longPress];
[longPress release];
}
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
}
else {
NSLog(@"Long press detected.");
if (self.isSelected) return;
if ([delegate respondsToSelector:@selector(singleTouch:)])
[delegate singleTouch:self];
[sender removeTarget:self action:@selector(handleLongPress:)];
sender.enabled = NO;
[self removeGestureRecognizer:sender];
}
}
关心!
请尝试描述你的问题详细 – 2012-03-13 16:52:18
我试着发送删除方法发件人作为参数,但仍然无法正常工作。 – NemeSys 2012-03-13 17:05:14
我编辑了我的答案... – 2012-03-14 16:10:47