我创建了很多视图和按钮,然后以图形方式创建了ISwipeGestureRecognizer。并为识别器“Referencing Outlet Collection”添加了很多视图。并且滑动手势适用于我的所有视图。这怎么可能? Storyboard会自动为每个连接的UIView创建不同的SwipeRecognizer吗?
我无法以编程方式添加更多视图,为什么?
答案 0 :(得分:2)
我从未尝试过你在故事板上描述的内容,因此我无法直接回答,但我可以建议一种方法来验证是否创建了多个手势识别器:在您的手势操作方法中,添加NSLog
语句到记录识别器的地址(这是传递给action方法的第一个参数)。这样,您将验证是否重用了相同的识别器。
此外,请记录recognizer.view
属性以查看引擎盖下的内容。如果对所有情况得到相同的结果,那么可以乐观地推断出UISwipeRecognizer
没有在其内部使用其view
属性,并且该信息仅存储在您的操作回调中能够访问它。
什么是神秘的是你只有一个手势识别器和view
属性的不同值。这意味着财产价值会随时改变,但我无法解释如何。
答案 1 :(得分:2)
您可以在Interface Builder中将手势识别器连接到多个视图。他们都会在触摸时发送正确的信息。但是,您无法使用识别器的视图属性检测触摸了哪个视图。无论触摸的视图如何,它始终指向相同的视图。
我不相信你可以用代码做同样的事情。是的,这很奇怪。
因此,只要你不关心哪个视图触发了触摸,你就会很好。
答案 2 :(得分:0)
您可以在代码中或使用界面构建器向任意数量的视图添加单个手势识别器。为此,请使用addGestureRecognizer:
UIView
方法。请注意,您将识别器添加到视图中,而不是相反。