使用一个滑动手势快速控制多个按钮

时间:2016-01-31 13:18:36

标签: ios swift uiimageview ontouch

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

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

但是我想用滑动手势做这件事,所以我可以用一个滑动触发器多个像素" (UIImageView)

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

所有这一切的主要目的是绘制"形状"在一个滑动手势的像素矩阵上。

如果您认为有其他方式可以帮助我,我会很高兴在这里谈论它。

非常感谢

2 个答案:

答案 0 :(得分:1)

您正在寻找UIGestureRecognizer。 通过这种方式,您可以添加多种类型的手势,如滑动,触摸等等。

您还可以获得位置,持续时间以及基本上所有相关信息。

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

还有苹果文档。 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/

答案 1 :(得分:1)

i管理使用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)
                    }
                }
            }
        }

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

我解决这个问题的想法是在所有UIImageViews的顶部添加图层,并禁用他们所拥有的点击识别,并使用坐标方式实现点击。

我很高兴听到是否有另一种方法可以做到这一点

更新: 我想通过我写的东西来解决上面的问题,但不是添加另一层我禁用所有UIImageViews的触摸并使用触摸的坐标和它们调用它们

非常感谢