gpt4 book ai didi

iPhone - GestureRecognizer 有时不触发?

转载 作者:行者123 更新时间:2023-12-03 19:58:58 26 4
gpt4 key购买 nike

我正在尝试在 iPhone 的 Objective C 中长按一个按钮。

这是我为 GestureRecognizer 编写的代码:

    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
longPressGesture.minimumPressDuration = 1.0; //1 second
longPressGesture.delegate = self;
[deleteButton addGestureRecognizer:longPressGesture];
[longPressGesture release];

这是我在选择器中使用的函数,当检测到长按键时调用。

-(void)handleLongPress:(UILongPressGestureRecognizer *) gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
NSLog(@"Got handle long key press");
NumLabel.text = @"";

}

}

我还添加了以下函数作为我的委托(delegate)类的一部分,但它们似乎没有任何影响:

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

return YES;
}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

return NO;

}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{

return YES;

}

我的问题是,这有时有效,但有时又无效,大多数时候我接到对handleLongPress的调用,它工作正常,但时常当按下并按住按钮时我什么也得不到,直到我在运行按钮的正常代码的阶段将手指从按钮上移开。

我是否错过了教程中的某些内容,或者有人能发现为什么它有时会起作用但在其他情况下我什么也得不到吗?

编辑

我实际上认为问题在于按下按钮的方式,如果我直接按下按钮并按住它,那么它工作正常,但是如果我的手指在按钮上滑动一点点,那么handleLongPress功能就不行了没有打电话。

我假设这是因为它把它识别为一个单独的手势?有没有办法确保只要按住按钮,即使手指在按钮上移动,handleLongPress 也会被调用?

最佳答案

手势识别器仅适用于触摸,不适用于按钮状态。长按实际上只是按下和释放。当触摸移动时,手势将被取消!
如果您只想知道按钮被按下的时间是否超过了特定时间,您可以处理按钮的 TouchDown/TouchCancel 事件并添加一些计时。

关于iPhone - GestureRecognizer 有时不触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6439551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com