一个滑动手势控制多个按钮 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 上的触摸,并使用触摸坐标和它们调用它们
非常感谢
我有 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 上的触摸,并使用触摸坐标和它们调用它们
非常感谢