하나의 항목이 선택되면 UILongPressGestureRecognizer 클래스를 사용하여 처리하고 있습니다.UILongPressGestureRecognizer 멈추지 않고 손을 멈춤
논리는 다음과 같습니다. 사용자가 1 초 동안 항목을 누릅니다 (UIView 하위 클래스). 제스처가 감지되면 해당 항목이 강조 표시되고 움직일 수 있습니다.
사용자는 터치하지 않고이 항목을 화면에서 이동해야합니다.
내가 직면하고있는 문제는 그림자를 인식 한 제스처입니다 .Began/Move/Moveed/Move/Ended는 항목 클래스가 동작을 정렬하는 데 필요합니다.
한 번 감지 된 항목과 선택한 항목을 제거하려고했습니다. 그러나 여전히 전화 접촉 대신 제스처 핸들에 메시지를 보냅니다.
누구나 화면의 손가락을 떼지 않고도 제스처 인식기를 "듣고"멈추는 방법을 알고 있습니까?
감사합니다. 여기에 코드
:-(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.");
}
}
대리자 선택으로이 항목을 표시하는 모든 절차를 가능하게 호출하는 다른 지점에서보고, 직후 인식기를 제거 할 수있다.
내가 무엇이 누락 되었습니까?
--EDIT--
완료! 작동 방식 :
#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];
}
}
감사합니다.
질문에 대해 자세히 설명해주세요. –
매개 변수로 발신자를 삭제하려고 시도했지만 여전히 작동하지 않았습니다. – NemeSys
내 대답을 편집했습니다 ... –