如何知道超级指定的初始化器?

时间:2016-05-13 18:40:21

标签: ios swift cocoa-touch uigesturerecognizer

我需要子类化,编译器警告说“必须调用超类的指定初始值设定项”,但我找不到它们,我应该在哪里寻找指定的初始化器?,我想知道在哪里寻找它们独立于未来子类的类。

代码:

import Foundation
import UIKit

class JBSOSLongGestureRecognizer: UILongPressGestureRecognizer {

    init() {

        super.init()

        self.allowableMovement = 40
        self.minimumPressDuration = 5
        self.cancelsTouchesInView = false
        self.numberOfTouchesRequired = 1
    }

}

2 个答案:

答案 0 :(得分:4)

UILongPressGestureRecognizer继承自UIGestureRecognizerUIGestureRecognizer的指定初始值设定项为public init(target: AnyObject?, action: Selector)

覆盖init(target: AnyObject?, action: Selector)而不是init()

我通过跳转到UILongPressGestureRecognizer的定义找到了指定的初始化程序。我没有在那里看到初始化器,但我确实看到它是UIGestureRecognizer的子类。步入UIGestureRecognizer声明会显示公共初始化程序。

此信息也可在Apple API文档中找到。文档将在指定的初始化程序旁边说明指定初始化程序

UIGestureRecognizer Documentation

答案 1 :(得分:0)

UILongPressGestureRecognizerUIGestureRecognizer的具体子类。因此,虽然您可以使用@JAL方法对其进行子类化,但它并不打算进行子类化。

在您的代码中,您似乎没有向JBSOSLongGestureRecognizer添加任何功能,为什么不使用UILongPressGestureRecognizer并使用您想要的值进行配置?