2016-04-20 45 views
1

我想在Swift中扩展UIGestureRecognizer,我希望所有手势都受到这个影响。在Swift中扩展UIGestureRecognizer

如果我这样做。

extension UIPanGestureRecognizer { 

    public override var state: UIGestureRecognizerState { 

    get { 

     return self.state 

    } 

    set(newState) { 

     self.handleStateChange(newState) 

    } 

    } 
} 

,如果我做了,但只针对PanLongPress或任何姿势我想会影响它才会起作用。我无法为所有人做到这一点。如果我为所有人做,那么它会带着错误回来。

'Property does not override any property from its superclass' 
'Getter for 'state' with Objective-C selector 'state' conflicts with method 'state()' with the same Objective-C selector. 

如果我删除override它只是回来了底部的错误。我正在Swift中寻找答案。

回答

-1

这听起来像你想要的是一个子类。子类可以覆盖其超类的属性。

class MyPanGestureRecognizer: UIPanGestureRecognizer { 
    override var state: UIGestureRecognizerState { 
     get { 
      return self.state 
     } 

     set(newState) { 
      print(newState) 
     } 
    } 
} 
+0

我想影响所有的手势,所以创建一个新的子类不会有帮助。 –

+0

您可以创建'UIGestureRecognizer'的子类(它本身就是'UIPanGestureRecognizer'的超类)并覆盖其状态属性。然后你可以在你的代码中使用这个子类。 – Evan

+0

这只会创建UIGestureRecognizer的另一个子类,但不会影响需要受影响的父类。 –