首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能让潘手势起作用

不能让潘手势起作用
EN

Stack Overflow用户
提问于 2016-05-29 06:52:26
回答 2查看 692关注 0票数 0

我正试着用斯威夫特添加一个平底锅手势,但我无法做到这一点。在解决这个问题时,我只能确认处理程序没有被调用。In中有一个名为UIViewController的子类RMConstructionViewController。在这个控制器中,我有一个scrollView,它包含一个UIView,它占用整个空间作为我的内容。然后,我以编程方式将子视图添加到我的contentView中。我的完整观点如下:

  1. UIView -> RMConstructionViewController
  2. UIScrollView -> scrollView
  3. UIView -> My contentView
  4. UIView ->以编程方式添加称为upperView
  5. UIView ->我想要平移的视图叫做symbolView
  6. UILabel -> --我想让symbolView存放几个项目,但是现在它只包含一个标签,并且是标签大小的sizedToFit。

我想我搞不懂目标到底是什么,等等。下面是我认为可行的方法:

代码语言:javascript
运行
复制
let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handleDatePan(_:)))
symbolView.addGestureRecognizer(gestureRecognizer)

在上面的代码之后,我立即将我的symbolView添加到upperView:

代码语言:javascript
运行
复制
upperView.addSubview(symbolView)

那么我的处理程序是:

代码语言:javascript
运行
复制
@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

你知道我为什么不能让平底锅工作吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-29 07:33:56

这个问题可能与UIScrollView有自己的GestureRecognizer有关。UIGestureRecognizerDelegate协议有一种允许多个GestureRecognizers同时处理事件的方法:

代码语言:javascript
运行
复制
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}
票数 0
EN

Stack Overflow用户

发布于 2016-05-29 15:06:03

我想出来了-终于。在以编程方式设置手势时,起作用的目标是我的类(self)。然后,使其工作的唯一方法是将我的子视图(symbolView)直接添加到scrollView中。所以,在视图层次结构中,我想构建的是禁止pan手势工作的东西。我不知道为什么等级制度是问题所在,但我确实让它发挥作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37507079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档