在iOS上的UIView上连续按下手势

时间:2014-02-20 09:58:12

标签: ios touch uigesturerecognizer

有没有办法通知UIView持续按?即我一直用一根手指按UIView,我想在这段时间内一次又一次地调用特定的方法。

我尝试了UILongPressGestureRecognizer,但它只是获得了开始,结束,移动等的通知。与TouchesBegan相同。

干杯

3 个答案:

答案 0 :(得分:2)

NSTimer中点击touchesBegan来调用您想要的选择器并在touchesEnded方法

中使其无效

答案 1 :(得分:2)

TouchesBegan开启计时器并在达到所需时间后执行选择器(长按)。 在TouchesEnded上使计时器无效以防止执行选择器。

我还会设置一个检测“fingerReleased”的额外标志: 在fingerReleased = NO上设置TouchesBegan,在fingerReleased = YES设置TouchesEnded,然后将要执行的代码放在:

if (!fingerReleased) 
{
    // Execute code
}

答案 2 :(得分:0)

您可以使用UILongPressGestureRecognizer和NSTimer的组合功能。

以下代码应符合您的要求。

@property (strong, nonatomic) NSTimer *timer;

- (void) viewDidLoad

{

 UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]         initWithTarget:self action:@selector(longPress:)];

   [aView addGestureRecognizer: longPress];

}

- (void) longPress:(UILongPressGestureRecognizer*)gesture

{

      if ( gesture.state == UIGestureRecognizerStateBegan ) 

  {

        self.timer=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(callMethod) userInfo:nil repeats:YES];

        [self.timer fire];

 }
    if ( gesture.state == UIGestureRecognizerStateEnded )

    {

            [self.timer invalidate];

 }

}

- (void) callMethod

{

   //will be called continuously within certain time interval you have set

}