ios - 由于 UILongPress,当我触摸它时 UIButton 未被识别

标签 ios uibutton sprite-kit

我正在尝试制作一款游戏,该游戏可以识别某人何时按住他/她的手指并在按住时移动玩家。最重要的是,我正在尝试创建一个后退按钮以返回主屏幕。 这是我对这两件事的代码:

- (void) didMoveToView:(SKView *)view {
holdingFinger = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
holdingFinger.minimumPressDuration = 0;
holdingFinger.numberOfTapsRequired = 0;
holdingFinger.numberOfTouchesRequired = 1;
holdingFinger.allowableMovement = 100;
[view addGestureRecognizer:holdingFinger];

changeScene = [UIButton buttonWithType:UIButtonTypeSystem];
[changeScene addTarget:self action:@selector(changeScene) forControlEvents:UIControlEventTouchUpInside];
[changeScene setTitle:@"Home" forState:UIControlStateNormal];
changeScene.backgroundColor = [UIColor whiteColor];
changeScene.frame = CGRectMake(410, 0, 70, 30);
[self.view addSubview:changeScene];}

- (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
    //NSLog(@"isHoldingDown = YES");
    isHoldingDown = YES;
} else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
    //NSLog(@"isHoldingDown = NO");
    isHoldingDown = NO;
}}

- (void) changeScene {
[changeScene removeFromSuperview];
SKScene* nextScene = [[ATOpenScene alloc] initWithSize:self.size];
SKTransition* transition = [SKTransition doorsOpenVerticalWithDuration:0.5];
[self.view presentScene:nextScene transition:transition];

这两个东西都按我希望的那样工作,但是,当我把它们都放进去时,我无法按下按钮。我在这里犯了一个简单的修复/粗心的错误吗?如果是这样,那会是什么?感谢您的帮助。

最佳答案

你的 holdingFinger.minimumPressDuration = 0;应该大于 0 才能使用敲击手势

关于ios - 由于 UILongPress,当我触摸它时 UIButton 未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915389/

相关文章:

ios - 无法识别的选择器从 UIButton 发送到实例错误消息

ios - 将 URL 图像与 UIButton 一起使用

ios - 我应该如何缩放我的物理 body ?

ios - 如何检查 SpriteKit 中屏幕的两半是否有触摸?

ios - UIButton.frame.origin.y 不是正确的值

ios - 如何对齐 UIImage 下面的 UIButton 中的文本,因为它没有正确显示

ios - 关闭键盘时 UITextField 触发不需要的 segue

ios - 适用于 iOS 的自定义粒子系统

ios - 当测试人员尝试下载应用程序时,Fabric 会导致错误

android - Flutter 将图像转换为 base64 并将 base64 字符串转换为图像