斯威夫特:userInteractionEnabled 用于纺车概念中的子视图

Posted

技术标签:

【中文标题】斯威夫特:userInteractionEnabled 用于纺车概念中的子视图【英文标题】:Swift: userInteractionEnabled for subviews in spinning wheel concept 【发布时间】:2017-12-29 12:40:38 【问题描述】:

我正在 ios 中尝试旋转轮的概念。我的基础教程是here

UIControl 是这里的核心。 Superview 的userinteraction 一直被禁用。

那么如何单独为其子视图启用userinteraction

我已将UITapGestureRecognizer 添加到 SmallRoundViews。手势不起作用。

如果我将 superview 的用户交互更改为启用,则手势正在工作。但是,它不旋转。

如果我将 superview 的用户交互更改为禁用,则旋转工作正常。但是手势不起作用。

我需要完成所有事情。你能指导我吗?

【问题讨论】:

我不确定,但我至少可以想到一个不可能的原因:由于交互是从父级传播到其子级的,因此父级很可能没有委托任何东西如果交互被禁用,句号。伪:if userInteractionDisabled return else delegateToChildren() ***.com/a/38217199/1979882 没有。一切都不起作用。请做有需要的 【参考方案1】:

以下代码正在工作,

如果我将 superview 的 userinteraction 更改为 trueUITapGestureRecognizerspinning 都可以工作..

覆盖UIControl 子类中的UITouch 方法。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 

        let touch : UITouch = touches.first!
        self.beginTracking(touch, with: event)

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) 

        let touch : UITouch = touches.first!
        self.continueTracking(touch, with: event)

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 

        let touch : UITouch = touches.first!
        self.endTracking(touch, with: event)


【讨论】:

以上是关于斯威夫特:userInteractionEnabled 用于纺车概念中的子视图的主要内容,如果未能解决你的问题,请参考以下文章

又名 'NSString' 没有成员 - 斯威夫特

为啥 AVAudioPlayer var 等于 nil? - 斯威夫特

斯威夫特:没有一个名为

消极时,斯威夫特加倍奇怪

是啥意思?斯威夫特的意思

斯威夫特 - NSPredicate