2017-12-29 16 views
1

iOSでスピニングホイールコンセプトを試しています。私の基本チュートリアルはhereSwift:スピニングホイールコンセプトのサブビュー用のuserInteractionEnabled

ここではUIControlが中心です。 Superviewのuserinteractionは常に無効になっていました。

userinteractionのサブビューのみを有効にするにはどうすればよいですか?

enter image description here

私はSmallRoundViewsにUITapGestureRecognizerを追加しました。ジェスチャーは機能しません。

スーパービューのユーザーインタラクションを有効に変更すると、ジェスチャーが機能しています。しかし、回転していない。

スーパービューのuserinteractionをdisableに変更すると、回転が機能しています。しかし、ジェスチャーは機能しません。

私はすべてが必要です。私を導くことができますか?

+0

私には分かりませんが、私はこれが不可能であるという少なくとも1つの理由を考えることができます:親から子への相互作用が伝播するので、親は相互作用すれば何も委任しません期間は無効です。疑似: 'if userInteractionDisabled else else delegateToChildren()' – luk2302

+1

https://stackoverflow.com/a/38217199/1979882 – Vyacheslav

+0

いいえ、すべて動作していません。親切に必要なことをする –

答えて

2

コードがUIControlサブクラスで

オーバーライドUITouch方法..私はtrueにスーパーのuserinteractionを変更する場合は、UITapGestureRecognizerspinningの両方が動作している

、のために働いている後。

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) 

} 
関連する問題