gpt4 book ai didi

ios - Swift UIGestureRecogniser 跟随手指

转载 作者:IT王子 更新时间:2023-10-29 05:04:41 26 4
gpt4 key购买 nike

我正在使用 Swift 制作一个 iOS8 应用程序。我希望用户能够使用手势来显示界面的某些部分。因此,例如,用户向上滑动他们的手指,然后他们向上滑动手指的 View 移开,跟随他们的手指以显示下面的另一个 View 。

我想要的是一种手势,可以提供类似于可以从屏幕顶部向下拉的通知框的结果。我一直在查看文档,但似乎找不到合适的手势。

我看到一个叫做 UISwipeGestureRecogniser 的,但唯一的问题是,它不会跟随你的手指,它只是在我向上/向下滑动手指时运行一个函数。

这是文档页面: https://developer.apple.com/documentation/uikit/uigesturerecognizer

最佳答案

您正在寻找 UIPanGestureRecognizer。您会找到 Apple 文档 here .

这是一个示例处理程序,它将用您的手指移动 View 。在 Interface Builder 中,将 UIPanGestureRecognizer 添加到您希望能够拖动的 View 。将委托(delegate)设置为您的 ViewController。将 Action 设置为这个 Action :

swift 2.X:

@IBAction func handlePan(gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == .Began || gestureRecognizer.state == .Changed {

let translation = gestureRecognizer.translationInView(self.view)
// note: 'view' is optional and need to be unwrapped
gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x + translation.x, gestureRecognizer.view!.center.y + translation.y)
gestureRecognizer.setTranslation(CGPointMake(0,0), inView: self.view)
}
}

swift 3:

@IBAction func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == .began || gestureRecognizer.state == .changed {

let translation = gestureRecognizer.translation(in: self.view)
// note: 'view' is optional and need to be unwrapped
gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y + translation.y)
gestureRecognizer.setTranslation(CGPoint.zero, in: self.view)
}
}

当然,您可以通过编程方式添加UIPanGestureRecognizer:

viewDidLoad 中为您的 ViewController 创建识别器并将其添加到您希望能够拖动的 View 中:

    let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
self.someDraggableView.addGestureRecognizer(gestureRecognizer)

关于ios - Swift UIGestureRecogniser 跟随手指,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25503537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com