1

我想在长按手势时打开弹出窗口。我的应用程序具有 UITableView 并且当用户长按 UITableviewCell 打开弹出窗口时。当用户握住手指的时间足够长时,只会显示弹出窗口。当用户长按并松开手指时不会。

我正在使用下面的代码:当我松开手指时使用此代码,弹出后会打开,所以这是错误的。我想在不松开手指的情况下长按打开弹出窗口。

//Long press gesture
UILongPressGestureRecognizer *longPressGesture= [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)];
longPressGesture.minimumPressDuration = .4; //seconds
longPressGesture.delegate = self;
longPressGesture.delaysTouchesBegan = YES;
cell.titleLabel.userInteractionEnabled = YES;
[cell.titleLabel addGestureRecognizer:longPressGesture];
4

2 回答 2

2

如果你想在长按开始后立即采取一些行动,那么你必须检查状态是否是UIGestureRecognizerStateBegan,然后编写你想要在长按手势开始时执行的代码。尝试使用以下代码行。

 -(void) handleLongPress:(UILongPressGestureRecognizer *)sender
{
  if (sender.state == UIGestureRecognizerStateBegan)
  {
  //Write code for open pop up.
  }
}
于 2016-04-02T04:46:26.080 回答
1

你可以这样做:

 -(void) handleLongPress:(UILongPressGestureRecognizer *)sender
{
  if (sender.state == UIGestureRecognizerStateBegan)
  {
  //Start a timer and perform action after whatever time interval you want.
  }
  if (sender.state == UIGestureRecognizerStateEnded)
  {
  //Check the duration and if it is less than what you wanted, invalidate the timer.
  }
}
于 2016-04-02T05:02:45.330 回答