[英]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.