addTargetだとstartAnimation()が動かない
ボタンを押すとアニメーションが動くように、UIButtonに対してメソッドを登録したいのですが、addGestureRecognizerで登録すると動くのですが、addTargetで登録すると動きません。
コードは以下になります。
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var startAnimationButton: UIButton!
var imageArray: [UIImage]!
override func viewDidLoad() {
super.viewDidLoad()
imageArray = [
UIImage(named: "0.png")!,
UIImage(named: "1.png")!
]
imageView.animationImages = imageArray
imageView.animationDuration = 5.0
let startAnimatonTapGesture: UITapGestureRecognizer = UITapGestureRecognizer()
startAnimationTapGesture.addTarget(self, action: "startAnimation")
startAnimationButton = UIButton(frame: CGRectMake(0, 0, 100, 20))
startAnimationButton.center.x = view.center.x
startAnimationButton.frame.origin.y = 550
startAnimationButton.setTitle("start", forState: .Normal)
startAnimationButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
startAnimationButton.addGestureRecognizer(startAnimationTapGesture) // addGestureRecognizerメソッド
// startAnimationButton.addTarget(self, action: "startAnimation", forControlEvents: UIControlEvents.TouchUpInside) // addTargetメソッド
view.addSubview(startAnimationButton)
}
func startAnimation() {
print("押されたよ!")
if !imageView.isAnimating() {
imageView.startAnimating()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
上記コードでは、addTargetの箇所をコメントアウトしているのでアニメーションは動くのですが、逆にaddGestureRecognizerをコメントアウトし、addTargetのコメントを外すと、アニメーションは動きせん。
ただし、"押されたよ!"はデバッグエリアに表示されるので、startAnimation()は正しく動いているようです。
なぜでしょうか?
よろしくお願いします。