UIImageView 上的快速滑动手势根本不起作用

Posted

技术标签:

【中文标题】UIImageView 上的快速滑动手势根本不起作用【英文标题】:Swift swipe gesture on UIImageView is not working at all 【发布时间】:2017-09-22 23:23:00 【问题描述】:

我有以下代码,但除了我尝试过的所有内容之外,在 swipeUpDots 上无法识别手势(控制台中没有“滑动”)。我该怎么办,谢谢!

我的 viewDidLoad 函数中有 setupInputComponents(),它被正确调用。

func setupInputComponents() 

    let containerView = UIView()

    view.addSubview(containerView)

    let swipeUpDots = UIImageView()

    swipeUpDots.image = #imageLiteral(resourceName: "threeDots")

    swipeUpDots.contentMode = .scaleAspectFit

    containerView.addSubview(swipeUpDots)

    // Adding swipe functionality

    let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(getSwipedUp(swipeGestureRecognizer:)))

    swipeUpDots.addGestureRecognizer(swipeUp)

    swipeUpDots.isUserInteractionEnabled = true



@objc func getSwipedUp(swipeGestureRecognizer: UISwipeGestureRecognizer)

    print("swiped")

    if swipeGestureRecognizer.direction == .up 

        print("Up Swiped")

        // Send Message



    


【问题讨论】:

【参考方案1】:

您需要为 UISwipeGestureRecognizer 设置允许的方向。在你的情况下:

swipeUp.direction = .up

另外,我注意到您已经初始化了 containerView (UIView) 和 swipeUpDots (UIImageView) 而没有定义它们的框架。以编程方式创建新 UIView 时,您需要告诉系统在哪里绘制它以及矩形大小应该是多少。这是一个例子:

let rect = CGRect(x: 100, y: 100, width: 100, height: 100)
let containerView = UIView(frame: rect)

对于 imageView,设置它的 frame 属性。有关详细信息,请参阅 Apple 的文档:

UISwipeGestureRecognizer

UIView

UIImageView

【讨论】:

其实没有,如果你使用自动布局,除了初始化UIView之外,你不需要做任何事情。 (在这种情况下,您确实需要将视图的 translatesAutoresizingMaskIntoConstraints 设置为 false。) 我不确定 OP 是否使用了自动布局。但是感谢您为我清除它!

以上是关于UIImageView 上的快速滑动手势根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中滑动手势 UIImageView

UIButton 和滑动手势

iPhone SDK 4.0 中的滑动手势? [关闭]

如何覆盖 UIWebView 中的滑动手势?

滑动手势识别器在垂直方向上不起作用

ios uiimageview点击手势在动画期间不起作用