http://uruly.xyz/文字入力時のようなuibuttonを起点としたフリック動作/

を参考にし、フリック操作時の上下の表示については参考のUILabelではなくUIImageViewを使用した画像にしたいと考え、以下のようなコードと致しました。
フリック(スワイプ動作)については問題なく動作するため、そのコードは抜いております。

let upimage: UIImage = UIImage(named: "upimage.png")!
let downimage: UIImage = UIImage(named: "downimage.png")!

var  btn: UIButton? = UIButton()
var  upImage: UIImageView? = UIImageView()
var  downImage: UIImageView? = UIImageView()

// ボタンに触れた時のアクション
func btnTouch(sender: UIButton) {
    print("touch")
    if upImage == nil {
        print("test")
        upImage! = UIImageView()
        upImage!.frame = CGRect(x: 0, y: 0, width: sender.frame.width,height: sender.frame.height)
        //起点となるボタンを支点とする
        upImage!.layer.position = CGPoint(x:sender.layer.position.x,y:sender.layer.position.y - sender.frame.height)
        upImage! = UIImageView(image: upimage)
        self.view.addSubview(upImage!)
    }

    if downImage == nil {
        downImage = UIImageView()
        downImage!.frame = CGRect(x: 0, y: 0, width: sender.frame.width,height: sender.frame.height)
        //起点となるボタンを支点とする
        downImage!.layer.position = CGPoint(x:sender.layer.position.x,y:sender.layer.position.y + sender.frame.height)
        downImage! = UIImageView(image: downimage)
        self.view.addSubview(downImage!)
    }

}

//ボタンから指が離れた時
func cancel(sender:UIButton) {
    print("離れた")
    if upImage == nil && downImage == nil {
        self.upImage!.removeFromSuperview()
        self.downImage!.removeFromSuperview()
        self.upImage = nil
        self.downImage = nil
    }
}

//上にスワイプした時
func countUp(sender:UISwipeGestureRecognizer){
    print("Up")
}

コード自体はエラー等もなくコンパイルできますが、ボタンに触れた時のアクション

func btnTouch(sender: UIButton) {
print("touch")
if upImage == nil {
    print("test")
    upImage! = UIImageView()
    upImage!.frame = CGRect(x: 0, y: 0, width: sender.frame.width,height: sender.frame.height)
    //起点となるボタンを支点とする
    upImage!.layer.position = CGPoint(x:sender.layer.position.x,y:sender.layer.position.y - sender.frame.height)
    upImage! = UIImageView(image: upimage)
    self.view.addSubview(upImage!)
}

などではif upImage == nil以下が実行されず画像を表示することができません。
これらは基本的なことが解っていないために起きている事象であると思うのですが、ボタンに触れた際の処理やボタンから指が離れた時の処理はどのような事が間違っているのでしょうか。
宜しくお願い致します。