我正在使用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