一个滑动手势控制多个按钮 swift

control multiple buttons with one swipe gesture swift

我有 UIImageView 的数组打印在矩阵中的主视图(作为子视图)上。

当我点击它们时,UIImageViews 会进行交互(当我触摸其中一个时,它会像像素一样工作,它会打开(从黑色变为绿色)

但我想用滑动手势来完成,这样我就可以用一个以上的滑动触发器 "pixel" (UIImageView)

我为 android triggering-multiple-buttonsonclick-event-with-one-swipe-gesture 找到了这个 我想知道 ios 和 swift 中是否有类似的东西可以识别一般触摸(不是点击或滑动),所以我可以寻找它。

所有这些的主要目的是通过一次滑动手势在像素矩阵上绘制 "shapes"。

如果您认为还有其他方法对您有所帮助,我很乐意与您分享。

非常感谢

您正在寻找 UIGestureRecognizer。 有了它,您可以添加多种类型的手势,如滑动、触摸等

您还可以获得位置、持续时间以及几乎所有相关信息。

您可以在此 link 中查看分步教程。 http://www.raywenderlich.com/76020/using-uigesturerecognizer-with-swift-tutorial

并且也在 apple 文档中。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/

我设法使用 touchesMoved 和 touchesEnded 执行滑动操作

而主要思想是使用触摸坐标调用 UIIMageViews 并将其与 touchesMoved 函数中的 UIImageViews 坐标进行比较

使用标志禁用已编辑的 UIIMageViews(当我在同一个触摸会话中,手指仍在屏幕上)并刷新 UIImageViews 以在 touchesEnded 中再次编辑

    func swipeTouches(touches: NSSet!) {
            // Get the first touch and its location in this view controller's view coordinate system
            let touch = touches.allObjects[0] as! UITouch
            let touchLocation = touch.locationInView(self.view)

            for pixel in pixelArrays {
                // Convert the location of the obstacle view to this view controller's view coordinate system
                let pixelViewFrame = self.view.convertRect(pixel.pixelImage.frame, fromView: pixel.pixelImage.superview)

                // Check if the touch is inside the obstacle view
                if CGRectContainsPoint(pixelViewFrame, touchLocation) {
                    // check if the pixel is Editable
                    if(!pixel.isEditable){
                        let index = pixel.index
                        pixelArrays.insert(updatePixel(index) , atIndex: index)
                    }
                }
            }
        }

我现在遇到的唯一问题是,如果在其中一个 UIImageView 上开始滑动,touchesMoved 函数将其视为查找坐标的视图,而其他 UIImageView 不受影响

我的解决方法是在所有 UIImageViews 的顶部添加层并禁用它们已经拥有的点击识别,并使用坐标方式实现点击。

如果有其他方法,我会很高兴听到的

更新: 我设法通过我写的方式解决了上面的问题,但我没有添加另一层,而是禁用了所有 UIImageViews 上的触摸,并使用触摸坐标和它们调用它们

非常感谢