- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 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/
我正在使用 Swift 制作一个 iOS8 应用程序。我希望用户能够使用手势来显示界面的某些部分。因此,例如,用户向上滑动他们的手指,然后他们向上滑动手指的 View 移开,跟随他们的手指以显示下面的
我编写了以下代码来将手势识别器附加到多个 ImageView 。 [imageview1 setUserInteractionEnabled:YES]; [imageview1 setMultiple
有没有办法知道“点击”是在 UIView 的 mask 区域之内还是之外?我正在使用 CoreGraphics 来屏蔽 UIView。 到目前为止,我的代码是这样的...... - (void)vie
我正在子类化 UIGestureRecogniser,但由于某种原因该方法 - (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer
我正在尝试为我的 View 创建自定义手势识别器。我正在关注这里提到的这个答案:但由于某种原因,没有调用已触摸的 Ended 和已拍摄的触摸。只有触摸开始才会被调用。 子类: #import "Tap
我对 iOS 的 SceneKit 相当陌生,并且遇到了关于 3d 场景中用户交互的困境: 我在 SCNView 中有一组 SCNNode 立方体,并且希望能够精确定位用户触摸给定立方体网格的位置,如
我想知道如何最好地解决以下问题: 我有一个 ViewController。它的 View 包含大量复杂的 subview (UIView 的子类)。由于复杂性,其中一些 UIView 会初始化自己的
努力让一个简单的 ReactiveCocoa 4 示例正常工作。 我的层次结构中有一个 View 的平移手势识别器。 我有一个预期的触摸事件目标类(假设我想根据触摸位置生成网络数据包)。 所以看起来我
我是一名优秀的程序员,十分优秀!