2017-01-05 4 views
2

を受けていない、 はここに私のコードですメソッドがtrueを返す条件を入力します。スウィフト3 UITapGestureRecognizer私はタップを検出するために、私のビューのいずれかにジェスチャー認識を追加したいタップ

しかし、onTapメソッドは呼び出されません。誰かが私にその理由を教えてくれますか?追加self.isUserInteractionEnabled = true

EDIT

は、私はそれが働いて得ることができました。 しかし、それは奇妙な振る舞いをしていました。メインビューだけではなくサブビューではタップを受け取ったようでした。

self.button?.addTarget(self, action: #selector(onTap), for: .touchUpInside) 
+0

あなたは何がタップされています'onTap'メソッドを呼び出すのですか? – jo3birdtalk

+0

全体像 – allemattio

+0

セレクターにパラメーター部分がありません。 – HAS

答えて

0

は私が気づいawakeFromNib()

0

let gesture = UITapGestureRecognizer(target: self, action: #selector(self.onTap)) 
     gesture.delegate = self 
     self.addGestureRecognizer(gesture) 

内部initブロックでないコードを書くお試しください: だから、それは私が私の見解内部にボタンを追加することによって、および使用することにより、簡単な解決作りますUIViewにジェスチャーを追加しています。したがって、このContainerViewを追加したViewControllerviewDidLoadメソッド内にこのコード行を追加します。

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.YourContainerView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(YourCurrentViewController.openDatePicker()))) 
    self.YourContainerView.isUserInteractionEnabled = true 
} 

注意。本当にisUserInteractionEnabledを追加することを忘れないでください。

3

これを行うには忘れてしまっている場合があります。

self.isUserInteractionEnabled = true 

はまた、通常のUIViewControllerのサブクラスは通常、ターゲットであるとタップジェスチャーのために使用される方法が含まれています。

あなたは(通常は)タップジェスチャー

+0

アクションを実行するためにタップをいつ処理するかを区別するために、代理人が必要です – allemattio

1

のためのデリゲートを設定する必要はありませんができませジェスチャー

let recognizer = UITapGestureRecognizer(target: self,action:#selector(self.handleTap(recognizer:))) 
userImage.isUserInteractionEnabled = true 
    recognizer.delegate = self as? UIGestureRecognizerDelegate 
userImage.addGestureRecognizer(recognizer) 

とメソッドコールのセレクタ

func handleTap(recognizer:UITapGestureRecognizer) { 

      // do your coding here on method 



     } 
関連する問題