gpt4 book ai didi

ios - 关于 UIGestureRecognizers,需要说明

转载 作者:行者123 更新时间:2023-11-28 19:19:45 24 4
gpt4 key购买 nike

然后在 Controller 中设置 UIGestureRecognizers:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];

并使 View 中的方法可用

-(void)handleSwipe:(UISwipeGestureRecognizer *)sender {
NSLog(@"Swipe detected");
}

还有什么需要的吗?如果没有,我想念什么?模拟手势时,NSlog不打印

最佳答案

编辑

我从 your recent question 看到您还使用了平移手势识别器。手势识别器并不知道如何在没有指导的情况下相互配合。您有两个主要选择

1) 一个或另一个:

[panGesture requireGestureRecognizerToFail:swipeGesture];

仅当触摸不是滑动时平移才会触发。或者-

2)两者同时:

符合 UIGestureRecognizerDelegate 协议(protocol)。

设置委托(delegate):

panGesture.delegate = self;
swipeGesture.delegate = self;

并实现方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}

原创

现在您正在将 View v 设置为识别器的目标,因此基本上当检测到滑动时,识别器调用:

[v handleSwipe:self];

您的两种方法似乎更可能在 View Controller 中。如果是这种情况,那么 init 方法应该如下所示:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
initWithTarget:self action:@selector(handleSwipe:)];

由于 v 是预期的目标,考虑到这一点,您的代码就可以了;我认为下一个最可能的原因是您的第一段代码在 View v 加载之前运行。也就是说,在 v 已经存在之后,代码不在 viewDidLoad 中。如果您不确定一个简单的日志是否可以确认它的存在:

NSLog(@"v is %@",v);

如果这被证明是死胡同,我们肯定会需要有关此 View 的更多信息 v。它的父类(super class)是什么?上面还有其他识别器吗?它是如何添加到 View 中的?

关于ios - 关于 UIGestureRecognizers,需要说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896271/

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