2017-11-05 16 views
1

PressableViewというカスタムクラスを作成しました。それはタップを認識し、その代理オブジェクトのプロトコル関数を呼び出します。 UIViewのサブクラスであるため、デフォルトではIBActionの接続は許可されません。
私はそれがビューコントローラ内の関数を接続することが可能かどうか、押し込み可能なビューはオブジェクトにあるので、それはあなたがUIButtonと同じようにそのメソッドをタップで呼び出すかどうか疑問に思っていました。 Xcodeのは、その型がIBOutletにすることはできません、IBActionをカスタムクラスに接続

class PressableView: UIView { 
    // ... 
    @IBOutlet var action: (() -> Void)? 
    // ... 
} 

...しかし:

は、私はすでにのようなものを試してみました。

アイデア?

答えて

2

変更PressableView親クラスをUIControlクラスとすると、アクションを接続して処理することができます。

UIControlは、UIViewクラスのサブクラスです。あなたはUIViewのプロパティもすべて持ちます。

class PressableView: UIControl { 
    @IBAction func uicontrolEventAction(_ sender: Any) { 
    } 
} 

enter image description here

enter image description here

+0

これは有望に見えます。関数を自分で呼び出すタイミングを定義することはできますか?言ってやるがいい、二度タップしたときにだけ発射したい? – LinusGeffarth

+0

それを考え出した。本当にありがとう! – LinusGeffarth

+1

いつでも私の喜び@LinusGeffarth !!ハッピーコーディング! :) –

関連する問題