Swift でティッカーのようなものを作成しています。

UILabelanimationWithDuration によって画面右外から左端へ流れてきて、一定時間停止した後、画面左外へ消え、次の UILabel がまた右から流れてくるという単純なものです。

UILabel をタップした際に、イベントが上手く取得できず悩んでいます。

TopicsLabel:

import UIKit
class TopicsLabel: UILabel {

required init(frame: CGRect, tag: Int, topics: String) {
    super.init(frame: frame)
    self.text = topics
    self.tag = tag
    commonInit()
}
required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    commonInit()
}
func commonInit() {
    self.textAlignment = NSTextAlignment.Left
    self.userInteractionEnabled = true
}
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    super.touchesEnded(touches, withEvent: event)
    println(self.tag)
}
}

これを、親である ViewController から、複数個 addSubview し、下記アニメーションで順番に流すように動かしています。

UIView.animateWithDuration(
        0.3,
        delay: show_delay,
        options: .CurveEaseInOut | .AllowUserInteraction | .AllowAnimatedContent,// | .BeginFromCurrentState
        animations: {() -> Void in
            target.center = CGPoint(x: 0+target.bounds.width/2, y: 0+target.bounds.height/2)
            return
        },
        completion: {(Bool) -> Void in
            UIView.animateWithDuration(
                0.1,
                delay: 3.0,
                options: .CurveLinear | .AllowUserInteraction | .AllowAnimatedContent,// | .BeginFromCurrentState
                animations: {() -> Void in
                    target.center = CGPoint(x: -self.bounds.width, y: 0+target.bounds.height/2)
                    return
                },
                completion: {(Bool) -> Void in
                    target.center = CGPoint(x: self.bounds.width + self.bounds.width/2, y: target.bounds.height/2)
                    self.showAnimation(target_tag + 1)
                }
            )
        }
    )

アニメーション自体は上手くいくのですが、色々と調べていたところアニメーションの仕様で、アニメーションが始まる前にすでに設定された位置にオブジェクトは移動しているが、見た目上はまだ移動していないように見えるだけということで、タッチイベントが発生する位置が、アニメーション後のまだティッカーの存在していないエリアになっています。

ちなみに、 UILabel が左端に来た際に一旦イベントを終了すれば良いかと思い、 completion ブロックの中に次のイベントを書くのではなく、右から左端にくるアニメーション(A)と、左端から画面外に出て行くアニメーション(B)を別々に設定し、Bで行っていたdelayの代わりにAとBの間に sleep を入れてみましたが、 sleep の間もイベントは発生しませんでした。
タッチイベント自体が動いてないようにも思います。

何か足がかりをいただければと思います。