我需要子类化,编译器警告说“必须调用超类的指定初始值设定项”,但我找不到它们,我应该在哪里寻找指定的初始化器?,我想知道在哪里寻找它们独立于未来子类的类。
代码:
import Foundation
import UIKit
class JBSOSLongGestureRecognizer: UILongPressGestureRecognizer {
init() {
super.init()
self.allowableMovement = 40
self.minimumPressDuration = 5
self.cancelsTouchesInView = false
self.numberOfTouchesRequired = 1
}
}
答案 0 :(得分:4)
UILongPressGestureRecognizer
继承自UIGestureRecognizer
。 UIGestureRecognizer
的指定初始值设定项为public init(target: AnyObject?, action: Selector)
。
覆盖init(target: AnyObject?, action: Selector)
而不是init()
。
我通过跳转到UILongPressGestureRecognizer
的定义找到了指定的初始化程序。我没有在那里看到初始化器,但我确实看到它是UIGestureRecognizer
的子类。步入UIGestureRecognizer
声明会显示公共初始化程序。
此信息也可在Apple API文档中找到。文档将在指定的初始化程序旁边说明指定初始化程序。
答案 1 :(得分:0)
UILongPressGestureRecognizer
是UIGestureRecognizer
的具体子类。因此,虽然您可以使用@JAL方法对其进行子类化,但它并不打算进行子类化。
在您的代码中,您似乎没有向JBSOSLongGestureRecognizer
添加任何功能,为什么不使用UILongPressGestureRecognizer
并使用您想要的值进行配置?