0

長押しが検出された後にのみ、パン ジェスチャを実装したいと考えています。「UIGestureRecognizerState.Changed」の長押しジェスチャーを監視し、そこでパンを処理するためにセレクターを呼び出しています。セレクターが起動します (「print()」チェックがコンソールに表示されます) が、uiview (blueRec) が実際に移動/変換する前に指を離す必要があります。

長押しとパンの両方のジェスチャが本質的に連続していることは理解していますが、長押しを起動した最初のプレスを使用して、タッチされた uiview (blueRec) もパンするにはどうすればよいですか? これがまったく当てはまらないとは思いません-requireGestureRecognizerToFail:

以下のコードを削除して、重要な行だけを含めました。

@IBOutlet weak var graySuper: UIView!
@IBOutlet weak var blueRec: UIView!

@IBOutlet weak var blueLeading: NSLayoutConstraint!
@IBOutlet weak var blueTop: NSLayoutConstraint!

var longPressGesture:UILongPressGestureRecognizer!


override func viewDidLoad() {

    super.viewDidLoad()

    self.longPressGesture = UILongPressGestureRecognizer(target:self, action:"handleLongpress:")
    self.longPressGesture.minimumPressDuration = 2
    self.blueRec.addGestureRecognizer(self.longPressGesture)


}


func handleLongpress(sender:UILongPressGestureRecognizer) {

    print("LPress")

   switch (sender.state) {
    case UIGestureRecognizerState.Began:

        self.blueRec.center = sender.locationInView(self.graySuper)


        break;
    case UIGestureRecognizerState.Changed:

        self.blueRec.center = sender.locationInView(self.graySuper)



        break;
    case UIGestureRecognizerState.Ended:

        print("Press Ended ")

        break;
    default:
        break;
    } 

}

4

1 に答える 1

1

現時点で私を逃したのはかなり基本的な解決策だったので、私は自分の質問に答えています。これが少なくとも誰かを助けることを願っています。

長押しジェスチャは、ドラッグ可能なオブジェクトの動きを追跡するのに十分であり、別のパン ジェスチャは、元のコードに表示されているように必要ありません。

    @IBOutlet weak var graySuper: UIView!
@IBOutlet weak var blueRec: UIView!

@IBOutlet weak var blueLeading: NSLayoutConstraint!
@IBOutlet weak var blueTop: NSLayoutConstraint!

var longPressGesture:UILongPressGestureRecognizer!


override func viewDidLoad() {

    super.viewDidLoad()

    self.longPressGesture = UILongPressGestureRecognizer(target:self, action:"handleLongpress:")
    self.longPressGesture.minimumPressDuration = 2
    self.blueRec.addGestureRecognizer(self.longPressGesture)


}


func handleLongpress(sender:UILongPressGestureRecognizer) {

    print("LPress")

   switch (sender.state) {
    case UIGestureRecognizerState.Began:

        self.blueRec.center = sender.locationInView(self.graySuper)


        break;
    case UIGestureRecognizerState.Changed:

        self.blueRec.center = sender.locationInView(self.graySuper)



        break;
    case UIGestureRecognizerState.Ended:

        print("Press Ended ")

        break;
    default:
        break;
    } 
于 2015-09-27T03:22:17.263 に答える