2016-11-15 5 views
1

iOS 9.0アプリでpod 'Player'を使用してビデオを再生しています。私はPlayerクラスをサブクラス化して、ウィンドウを閉じるためのUIButtonオーバーレイを追加しました。ボタンコントロールがSwifty `Player`パッケージビューコントローラのタップに応答しません

タップしたときに表示されるアニメーションが上手く表示されますが、内側に触れるときにcloseTappedが呼び出されません。

import UIKit 
import Player 

class PlayerViewController: Player, PlayerDelegate { 

    func install() { 
     view.frame = presentor.view.bounds 
     presentor.addChildViewController(self) 
     presentor.view.addSubview(view) 
     didMove(toParentViewController: presentor) 

     let closeImage = UIImage(named: "close")! 
     let closeButton = UIButton(type: .custom) 
     view.addSubview(closeButton) 
     closeButton.setImage(closeImage, for: .normal) 
     closeButton.autoPinEdge(toSuperviewEdge: .top, withInset: 25) 
     closeButton.autoPinEdge(toSuperviewEdge: .right, withInset: 15) 
     closeButton.autoSetDimensions(to: CGSize(width: 50, height: 50)) 
     closeButton.addGestureRecognizer(UITapGestureRecognizer()) 

     closeButton.addTarget(self, action: #selector(closeTapped), for: .touchUpInside) 
    } 

    func closeTapped() { 
     logger.debug("Player close tapped") 
    } 
} 

私もcloseTapped(sender: Any?)を持っていましたが、助けになりませんでした。

closeTappedはなぜ呼び出されませんか?

+0

「closeButton.addTarget(self、action:#selector(PlayerViewController.closeTapped(_ :) for:.touchUpInside)」と「closeTapped(_ sender:AnyObject)」を試してください。 – Idan

答えて

1

ボタンにTapGestureRecognizerを追加する必要はありません。スウィフト3.0の場合は、次のようにすることができます。

button.addTarget(self, action: #selector(closeTapped(sender:)), for: .touchUpInside) 

func closeTapped(sender: UIButton) { 
} 
+0

この「TapGestureRecognizer」は残り物ですそれは削除されているはずです!ありがとう – Kof

0

ボタンの上部にUITapGestureRecognizer()が追加されていると思います。それは#selectorを持っています。したがって、あなたのボタンのデフォルトの.touchUpInsideコントローラは呼び出していません。

//closeButton.addGestureRecognizer(UITapGestureRecognizer())

この行をコメント付き

してみてください。

この情報は役に立ちましたか?

関連する問題