IOS Swift : UIPanGestureRecognizer 在 2 个不同的视图上
Posted
技术标签:
【中文标题】IOS Swift : UIPanGestureRecognizer 在 2 个不同的视图上【英文标题】:IOS Swift : UIPanGestureRecognizer on 2 differents views 【发布时间】:2015-08-06 08:36:36 【问题描述】:我是 swift/xcode 的新手,我遇到了 UIPanGestureRecognizer 的问题。 我正在尝试做一个滑动菜单,当你“平移”他时它会滑动。 滑动菜单运行良好,我可以通过平移菜单(UIViews)来滑动它。 但是这个菜单必须在一开始就隐藏起来。 所以我在它下面放了一个小箭头。这就是问题所在......我想要一个 UIpanGestureRecognizer 执行与前一个相同的操作。当我平移箭头时,当然。 所以,这是有效的代码:
// all is working with this code. handlePan is working well.
var panGestureRecognizer:UIPanGestureRecognizer!
panGestureRecognizer = UIPanGestureRecognizer(target: self, action: "handlePan:")
self.addGestureRecognizer(panGestureRecognizer)
这就是我尝试的箭头:
let mysubView = UIView()
let arrowView = UIImageView()
let imageName = "arrow"
let image = UIImage(named: imageName)
let imageView = UIImageView(image: image!)
var panGestureRecognizerArrow:UIPanGestureRecognizer!
//put subview bellow the menu
mysubView.frame = CGRect(x: self.bounds.size.width / 2 - 15, y: self.bounds.height, width: 30, height: 30)
//put arrow bellow the menu
imageView.frame = CGRect(x: self.bounds.size.width / 2 - 5, y: self.bounds.height, width: 10, height: 10)
addSubview(imageView)
//put a invisible subview over image, to have a bigger "hit box"
addSubview(mysubView)
//I think the problem is HERE
panGestureRecognizerArrow = UIPanGestureRecognizer(target: mysubView, action: "handlePan:")
self.addGestureRecognizer(panGestureRecognizerArrow)
//it did'nt passed by the handlePan function when I pan mysubView. There is debug console out in it.
就像评论说的那样,我认为问题出在最后两行。 有人知道怎么了?
【问题讨论】:
【参考方案1】:您应该将UIPanGestureRecognizer
附加到mysubView
:
panGestureRecognizerArrow = UIPanGestureRecognizer(target: self, action: "handlePan:")
mysubView.addGestureRecognizer(panGestureRecognizerArrow)
对于从屏幕边缘附近开始的平移手势,您也可以使用UIScreenEdgePanGestureRecognizer。
【讨论】:
谢谢,但还是不行。我将其更改为 UITapGestureRecognizer。 tapGestureRecognizerArrow = UITapGestureRecognizer(target: self, action: "snapToBottomTap:") 我创建 snapToBottomTap 函数来尝试。如果我将gestureRecognizer添加到self。但是,如果我尝试将其添加到另一个视图,则没有任何效果。我只写在“MenuView”类。我需要为子视图创建一个类吗? 据我记得UIGestureRecognizer
如果 alpha 为 0,则不起作用。这就是为什么我建议您在主视图中处理触摸并根据翻译移动图像 + 菜单 (@ 987654326@).以上是关于IOS Swift : UIPanGestureRecognizer 在 2 个不同的视图上的主要内容,如果未能解决你的问题,请参考以下文章