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 上的快速滑动手势根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章