【发布时间】:2018-06-24 15:49:06
【问题描述】:
我有一个UIStackView 的自定义子类,里面有一些UIImageViews。我希望视图接受平移手势以跟踪其表面的缓慢滑动。当我在 Interface Builder 中配置 UIPanGestureRecognizer 时,它可以工作,但不能在代码中使用。这是该类的缩写版本:
@IBDesignable
class CustomView: UIStackView {
private let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(CustomView.singleFingerSwipe))
override init(frame: CGRect) {
super.init(frame: frame)
initializeProperties()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initializeProperties()
}
@IBAction
private func singleFingerSwipe(_ sender: UIPanGestureRecognizer) {
print("Panning...")
}
private func initializeProperties() {
addGestureRecognizer(panRecognizer)
for _ in 1...3 {
let imageView = UIImageView(image: UIImage(named: "MyImage"))
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.isUserInteractionEnabled = true
addArrangedSubview(imageView)
imageView.widthAnchor.constraint(equalTo: imageView.heightAnchor).isActive = true
imageView.heightAnchor.constraint(equalTo: self.heightAnchor).isActive = true
}
}
}
当我在星形视图内滑动时,没有输出打印。但是,如果我将 Pan Gesture Recognizer 放到 IB 中的视图上并将其连接到同一个选择器,它就可以正常工作。我错过了什么?
【问题讨论】:
标签: ios uiview interface-builder uigesturerecognizer uipangesturerecognizer