2016-05-13 8 views
0

私はサブクラス化が必要です。コンパイラの警告は "スーパークラスの指定された初期化子を呼び出さなければなりません"と言いますが、それらを見つけることができません。どこで指定された初期化子を探す必要がありますか?将来のサブクラス化のためにクラスのスーパークラスで指定された初期化子を知るには?

コード:UIGestureRecognizerから

import Foundation 
import UIKit 

class JBSOSLongGestureRecognizer: UILongPressGestureRecognizer { 

    init() { 

     super.init() 

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

} 
+0

なぜ私の編集を元に戻しましたか?あなたの質問のタイトルは不明です、私はあなたの記事をきれいにしました。 – JAL

+0

@ JAL ok、自分自身で解決しましたが、この具体的なケースやクラスではなく、将来どこで検索するかを知ることが重要です。 –

答えて

4

UILongPressGestureRecognizer継承。 UIGestureRecognizerの指定初期化子はpublic init(target: AnyObject?, action: Selector)です。

init()の代わりにinit(target: AnyObject?, action: Selector)を上書きします。

UILongPressGestureRecognizerの定義にジャンプすることで、指定された初期化子が見つかりました。そこに初期化子がありませんでしたが、それはUIGestureRecognizerのサブクラスであることがわかりました。 UIGestureRecognizer宣言に入ると、公開イニシャライザが明らかになりました。

この情報は、Apple APIのドキュメントにも記載されています。ドキュメントには、指定初期化プログラムが指定された初期化プログラムの横に表示されます。

UIGestureRecognizer Documentation

+0

の質問によれば、私はこの具体的なケースの他に、各クラスの初期化子をどこから見るべきか知りたいと思います。 –

+0

@JuanPabloBoeroAlvarezは私の答えを編集して、イニシャライザを見つけるプロセスを示しました。 – JAL

+0

ok、働いて、あなたの答えから何が欠けていたかを確認するコードを確認してください、ありがとう。 –

0

UILongPressGestureRecognizerUIGestureRecognizerの具体的なサブクラスです。そのため、@ JALメソッドを使用してサブクラス化することはできますが、サブクラス化するつもりはありません。

JBSOSLongGestureRecognizerに機能を追加しているようではありません。UILongPressGestureRecognizerを使用して、必要な値を設定するのはなぜですか?

関連する問題