【发布时间】:2016-09-27 04:28:31
【问题描述】:
我正在尝试使用 swift 添加平移手势,但无法正常工作。在解决这个问题时,我只能确认处理程序没有被调用。有一个 UIViewController 的子类,称为 RMConstructionViewController。在这个控制器中,我有一个滚动视图,其中包含一个 UIView,它占据了整个空间作为我的内容。然后,我以编程方式将子视图添加到我的 contentView。我的完整观点如下:
- UIView -> RMConstructionViewController
- UIScrollView -> 滚动视图
- UIView -> 我的内容视图
- UIView -> 以编程方式添加称为 upperView
- UIView -> 我要平移的视图叫做 symbolView
- UILabel -> 我想让 symbolView 容纳一些项目,但现在它只包含一个标签,并且调整到适合标签的大小。
我想我对目标到底是什么等感到困惑。这是我认为可行的方法:
let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handleDatePan(_:)))
symbolView.addGestureRecognizer(gestureRecognizer)
在上面的代码之后,我立即将我的 symbolView 添加到 upperView:
upperView.addSubview(symbolView)
那么我的处理程序是:
@IBAction func handleDatePan(gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == UIGestureRecognizerState.Began || gestureRecognizer.state == UIGestureRecognizerState.Changed {
let translation = gestureRecognizer.translationInView(upperView)
if gestureRecognizer.view!.center.x >= 0 && gestureRecognizer.view!.center.x <= currentRoadmap!.timeline!.width{
gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x + translation.x, gestureRecognizer.view!.center.y)
if gestureRecognizer.view!.center.x < 0 {
gestureRecognizer.view!.center.x = 0
}
if gestureRecognizer.view!.center.x > currentRoadmap!.timeline!.width {
gestureRecognizer.view!.center.x = currentRoadmap!.timeline!.width
}
gestureRecognizer.setTranslation(CGPointMake(0,0), inView: upperView)
}
}
}
在上面的代码中,“currentRoadmap!.timeline!.width 等同于 CGFloat
任何想法为什么我不能让平底锅工作?
【问题讨论】: