如何在iOS中检测滑动手势?

33

在我的 iPhone 应用中,我需要识别用户在视图上进行的滑动手势。

我希望能够识别滑动手势并在滑动时执行一个功能。

我需要视图在用户进行滑动手势时水平滑动并显示另一个视图。

需要做什么?

如何进行识别?

3个回答

44

如果您知道它如何工作,但仍需要一个快速示例,则在此处!(至少在我需要复制粘贴示例而无需尝试记住它时,它将变得方便)

UISwipeGestureRecognizer *mSwipeUpRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)];

[mSwipeUpRecognizer setDirection:(UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];

[[self view] addGestureRecognizer:mSwipeUpRecognizer];

并且在 .h 文件中添加:

<UIGestureRecognizerDelegate>

由于ARC的释放,[mSwipeUpRecognizer release]不再必要,您应该编辑您的答案。无论如何,感谢您的回答。 - King-Wizard
self.swipeGestureRecognizer.direction = (UISwipeGestureRecognizerDirection.Left | UISwipeGestureRecognizerDirection.Right) // 供您参考:它在Swift中不起作用。 - King-Wizard
<UIGestureRecognizerDelegate> 在 .h 文件中添加(在 Swift 中不是必需的): - King-Wizard
以上答案在Swift中不起作用,请查看我下面的答案(解决Swift和Objective-C中的问题)。 - King-Wizard

40

1
谢谢您的输入。您能否为此提供一些演示或教程?我是个新手。谢谢。 - Parth Bhatt
11
我可以翻译,请问需要翻译的内容是什么?"I can, but I'd rather you watch the WWDC10 videos, the two sessions I described. They will teach you everything you need to know about gesture recognizers in 2 hours. Much more efficiently than I could do here. I've updated my answer to provide a link to the videos." - jer

1
以下链接将重定向您到一个视频教程,该教程将告诉您如何在iPhone中使用Objective-C检测滑动手势:

UISwipeGestureRecognizer 教程(检测 iPhone 上的滑动手势)

下面是一个代码示例,用于在Swift中实现该功能:
您需要为每个方向拥有一个UISwipeGestureRecognizer。这有点奇怪,因为UISwipeGestureRecognizer.direction属性是一个选项样式的位掩码,但每个识别器只能处理一个方向。如果您希望可以将它们全部发送到同一个处理程序,并在那里进行排序,或者将它们发送到不同的处理程序。这是一个实现示例:
override func viewDidLoad() {
    super.viewDidLoad()
    
    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)
    
    var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeDown.direction = UISwipeGestureRecognizerDirection.Down
    self.view.addGestureRecognizer(swipeDown)
}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {
    
    if let swipeGesture = gesture as? UISwipeGestureRecognizer {
        
        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.Right:
            println("Swiped right")
        case UISwipeGestureRecognizerDirection.Down:
            println("Swiped down")
        default:
            break
        }
    }
}

Swift 5版本:

let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGestureRight))
swipeRight.direction = UISwipeGestureRecognizer.Direction.right
self.view.addGestureRecognizer(swipeRight)

为什么要对正常运作且可能有助于全球人民的事情进行负面评价? - King-Wizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接