簡體   English   中英

Swift,滑動手勢識別器方向不起作用,似乎無法獲得方向

[英]Swift, swipe gesture recognizer direction doesn’t work, can’t seem to get the direction

編輯:現在似乎滑動手勢一次只能采取一個方向。 如果有人知道同時處理多個方向的另一種方法,我仍然很感激信息!

Eidt:我在這個 [answer] ( https://stackoverflow.com/a/46104997/9645644 ) 中找到了一種簡潔地處理多個方向的方法,它使用帶有 forEach 循環的數組文字。 這比從故事板中單獨添加手勢和拖動動作要方便得多。

我正在嘗試使快速滑動手勢起作用,一切都很好,直到我嘗試檢測滑動的方向。 下面是我的代碼。 我不明白為什么這不起作用,希望得到幫助!

在視圖控制器的 viewDidLoad 中,我設置並添加了滑動手勢識別器,方向為 [.left, .right]。 之后,我實現了需要檢測滑動方向的處理程序方法。 這個視圖控制器中沒有其他東西。 在它無法工作(滑動時沒有響應)后,我添加了一些打印,並在標題中得到了輸出。

override func viewDidLoad() {
    super.viewDidLoad()
    let swipeGestureRecognizer = UISwipeGestureRecognizer(target:self, action:#selector(swipeHandler(recognizer: )))
    swipeGestureRecognizer.direction = [.left, .right]
    view.addGestureRecognizer(swipeGestureRecognizer)
}

@objc func swipeHandler (recognizer: UISwipeGestureRecognizer){
    switch recognizer.state{
    case .ended:
        let direction = recognizer.direction
        print(direction)
        if direction == .left {print(”left”)}
        else if direction == .right {print(“right”)}
        else {print(print(“none”)}
    defaul: break
}

無論我向左還是向右滑動,它總是打印“none”。 並且方向打印總是給出“UISwipeGestureRecognizerDirection(rawValue: 3)”

direction屬性告訴手勢何時觸發。 例如,如果direction == .right則滑動只會在向右滑動時觸發。 (它不會告訴您檢測到的方向)

您需要一次檢測一個方向。 我還建議添加一種方法來控制每個滑動方向。 例如。

func setUpGestures() {
    // Gesture that define a left swipe.
    let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(Scene.swipeLeft))
    swipeLeft.direction = .left
    view?.addGestureRecognizer(swipeLeft)
    // Do the same for the rest of the directions.
}

@objc func swipeLeft() {
    // Do something when the user swipe left.
}

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM