2017-09-22 2 views
0

私は以下のコードを持っていますが、私が試したすべてのもののほかに、スウィープアップストップではジェスチャは認識されません(コンソールにはスワイプされません)。どうしたらいいですか、ありがとう!UIImageViewのスワイプスワイプジェスチャーが全く機能していません

私はviewDidLoad関数にsetupInputComponents()を持っており、正しく呼び出されています。

func setupInputComponents() { 

    let containerView = UIView() 

    view.addSubview(containerView) 

    let swipeUpDots = UIImageView() 

    swipeUpDots.image = #imageLiteral(resourceName: "threeDots") 

    swipeUpDots.contentMode = .scaleAspectFit 

    containerView.addSubview(swipeUpDots) 

    // Adding swipe functionality 

    let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(getSwipedUp(swipeGestureRecognizer:))) 

    swipeUpDots.addGestureRecognizer(swipeUp) 

    swipeUpDots.isUserInteractionEnabled = true 

} 

@objc func getSwipedUp(swipeGestureRecognizer: UISwipeGestureRecognizer){ 

    print("swiped") 

    if swipeGestureRecognizer.direction == .up { 

     print("Up Swiped") 

     // Send Message 



    } 

} 

答えて

1

UISwipeGestureRecognizerの許可方向を設定する必要があります。あなたのケースでは:

swipeUp.direction = .up 

はまた、私はあなたが彼らのフレームを定義することなくcontainerView(UIViewの)とswipeUpDots(UIImageView)を初期化していることに気づきました。プログラムで新しいUIViewを作成するときは、システムに描画する場所と長方形のサイズを教えてください。次に例を示します。

let rect = CGRect(x: 100, y: 100, width: 100, height: 100) 
let containerView = UIView(frame: rect) 

imageViewの場合は、frameプロパティを設定します。詳細については、Apple社からのドキュメントを参照してくださいません:実際に

UISwipeGestureRecognizer

UIView

UIImageView

+0

*全く*を、あなたは* * 'UIView'を初期化するよりも、より多くの何もする必要はありません自動レイアウトを使用している場合。 (その場合、ビューの 'translateAutoresizingMaskIntoConstraints'を' false'に設定する必要があります) – dfd

+0

OPが自動レイアウトを使用しているかどうかはわかりませんでした。しかし、私のためにそれをクリアしてくれてありがとう! –

関連する問題