如何在滑动手势识别器函数中找到 UIButton 元素的父元素以构造对象?

Posted

技术标签:

【中文标题】如何在滑动手势识别器函数中找到 UIButton 元素的父元素以构造对象?【英文标题】:How to find parent of a UIButton element in a swipe Gesture Recognizer function to construct an Object? 【发布时间】:2018-07-16 17:27:16 【问题描述】:

我创建了一个通过拖动按钮触发的“向左滑动”功能。我需要创建一个抽象类,这样我就可以让它向左滑动到触发“滑动到函数”的按钮的任何父元素。

现在链接到作为该元素的父级的 UIView。我尝试使用sender.superview,但它不起作用。

@IBAction func swipeRightIncome(_ sender: Any) 
    _ = UIViewPropertyAnimator(duration: 0.30, curve: .easeInOut)
        self.swipeLayer.transform = CGAffineTransform(translationX: 0, y: 0)
        .startAnimation()

【问题讨论】:

【参考方案1】:

您需要将 sender 类型转换为 Any ,或者

@IBAction func swipeRightIncome(_ sender: UISwipeGestureRecognizer) 

  let parent = sender.view.superView!.superView!.superView!

  // do what you want 


还必须在ViewController中声明这个

@IBOutlet weak var profitDrag:ViewDesignShadow!

【讨论】:

我正在尝试这个。仍然由于其他原因而出现一些错误。 像@IBAction func swipeLeftIncome(_ sender: UIBUtton) _ = UIViewPropertyAnimator(duration: 0.30, curve: .easeInOut) let parent = sender.superview! parent.transform = CGAffineTransform(translationX: -50, y: 0) .startAnimation() 它崩溃了。这次我做错了什么@Sh_Khan? 是的,这也可以,重要的是它不是 Any 还要确保 sender 是 _ sender: UIButton 而不是 _ sender: UIView,因为假设您点击了一个按钮 在VC中添加了视图@IBOutlet weak var profitDrag:ViewDesignShadow!

以上是关于如何在滑动手势识别器函数中找到 UIButton 元素的父元素以构造对象?的主要内容,如果未能解决你的问题,请参考以下文章

Closed:: 创建一个带有滑动和点击手势的 UIButton 水平轮播

UIButton检测按住,以及“手势识别器”?

使用滑动手势交换两个 UIButton

如何将手势识别器添加到 UITableViewCell 的 UIImage 和 UIButton?

UIButton 和滑动手势

识别禁用的 UIButton 上的单击或手势事件