有没有办法通知UIView
持续按?即我一直用一根手指按UIView
,我想在这段时间内一次又一次地调用特定的方法。
我尝试了UILongPressGestureRecognizer
,但它只是获得了开始,结束,移动等的通知。与TouchesBegan
相同。
干杯
答案 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
}