我创建了很多视图和按钮,然后我图形化地创建了ISwipeGestureRecognizer。并为识别器添加了许多视图“引用Outlet集合”。而且swipe手势在我所有的视图上都有效。这怎么可能呢?Storyboard会自动为每个连接的UIView创建不同的SwipeRecognizers吗?

我不能以编程方式添加更多视图,为什么?
发布于 2012-04-27 03:11:38
我从未尝试过使用Storyboard描述的内容,因此无法直接回答,但我可以建议一种方法来验证是否创建了多个手势识别器:在手势操作方法中,添加一条NSLog语句来记录识别器的地址(这是传递给操作方法的第一个参数)。通过这种方式,您将验证是否重用了相同的识别器。
另外,记录recognizer.view属性以查看幕后发生的事情。如果您在所有情况下都得到相同的结果,那么可以乐观地推断UISwipeRecognizer没有在内部使用它的view属性做任何事情,并且该信息只为您的操作回调能够访问而存储。
令人费解的是,您只有一个手势识别器和不同的view属性值。这意味着属性值是动态更改的,但我无法解释是如何更改的。
发布于 2012-07-16 08:11:12
您可以将一个手势识别器连接到界面生成器中的多个视图。当它们被触摸时,它们都会发送适当的消息。但是,您不能使用识别器的view属性来检测哪个视图被触摸。它将始终指向相同的视图,而不管所触摸的视图是什么。
我不相信你可以用代码做同样的事情。是的,这很奇怪。
所以,只要你不关心哪个视图触发了触摸,你就一切都好了。
发布于 2012-04-15 05:30:13
您可以在代码中或使用界面构建器将单个手势识别器添加到任意多个视图。为此,您可以使用UIView的addGestureRecognizer:方法。请注意,要将识别器添加到视图中,而不是相反。
https://stackoverflow.com/questions/10155096
复制相似问题