使用长按时出现两个动作表

在我的viewDidLoad里面,我有以下几点:

UILongPressGestureRecognizer *longpressGesture =[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongpressGesture:)]; longpressGesture.minimumPressDuration = 1; longpressGesture.allowableMovement = 5; longpressGesture.numberOfTouchesRequired = 1; [self.tableView addGestureRecognizer:longpressGesture]; [longpressGesture release]; 

我创build了以下内容:

 -(IBAction) handleLongpressGesture:(UIGestureRecognizer *) sender { UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Delete Record?" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Yes",@"No",nil]; [actionSheet showInView:self.view]; [actionSheet release]; } 

使用模拟器,当我长时间按下时,两个动作表显示出来,而不是一个。

任何想法,为什么这是这样的?
这是模拟器的问题吗?

这不是模拟器的问题。

当手势经历不同的状态(开始,结束等)时,手势处理器被多次调用。

您需要检查处理程序方法中的手势state

 -(IBAction) handleLongpressGesture:(UIGestureRecognizer *) sender { if (sender.state == UIGestureRecognizerStateBegan) { UIActionSheet *actionSheet = [[UIActionSheet alloc] init... [actionSheet showInView:self.view]; [actionSheet release]; } }