我有一个UIImageView
数组,它打印在矩阵的主视图(作为子视图)上。
当我点击它们时,UIImageViews
会互动(当我触摸其中一个像素时它会像一个像素一样工作(从黑色变为绿色)
但是我想用滑动手势做这件事,所以我可以用一个滑动触发器多个像素" (UIImageView)
我在Android triggering-multiple-buttonsonclick-event-with-one-swipe-gesture找到了这个 我想知道在ios中是否有像swift这样的东西可以识别一般触摸(不是点击或滑动)所以我可以找到它。
所有这一切的主要目的是绘制"形状"在一个滑动手势的像素矩阵上。
如果您认为有其他方式可以帮助我,我会很高兴在这里谈论它。
非常感谢
答案 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的触摸并使用触摸的坐标和它们调用它们
非常感谢