如何为所有屏幕的 iPhone 应用程序添加垂直滑动手势?
Posted
技术标签:
【中文标题】如何为所有屏幕的 iPhone 应用程序添加垂直滑动手势?【英文标题】:How to add a vertical swipe gesture to iPhone app for all screens? 【发布时间】:2011-01-09 15:32:33 【问题描述】:我想在我的应用程序中添加一个手势,这样当用户垂直滑动时,它会触发一个方法来做某事。滑动可以向上或向下。我从来没有对手势做过任何事情,所以这是我第一次使用手势,而不是 UITableView 中包含的用于删除行的手势。
另一个问题是我的大部分屏幕都是 UITableView,因此用户可以简单地滚动 UITableView。所以我想知道我是否可以使用两指滑动(垂直)来检测运行代码的手势,而不是单指滑动来滚动 UITableView?
提前谢谢你。
尼尔
【问题讨论】:
【参考方案1】:这在 ApplicationDidLaunch 中:
UISwipeGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipedScreen:)] autorelease];
swipeGesture.numberOfTouchesRequired = 2;
swipeGesture.direction = (UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown);
[window addGestureRecognizer:swipeGesture];
然后实施
- (void) swipedScreen:(UISwipeGestureRecognizer*)swipeGesture
// do stuff
使用UIGestureRecognizer 和UISwipeGestureRecognizer 的文档。
此外,如果您希望检测滑动的方向,则必须设置两个单独的手势识别器。您无法从滑动手势识别器中获取滑动方向,只能获取它注册识别的方向。
【讨论】:
发现一个问题 - 当我旋转我的设备时,滑动“垂直”手势没有考虑方向。因此,如果您创建垂直(DirectionUp/Down)滑动并将设备旋转到横向,您现在必须水平滑动。有什么解决这个问题的建议吗? 确保尝试移除手势识别器并在旋转后读取它们。您可以使用 UIView 实例方法gestureRecognizers
循环访问它们并删除它们。即for (UIGestureRecognizer *recognizer in self.view)
@mackross 我想上下交换多个视图,所以如何实现说我 plz....???
这里的window
是什么[window addGestureRecognizer:swipeGesture];
..?【参考方案2】:
在 swift 4.0 中,AppDelegate 的方法 didFinishLaunchingWithOptions:
let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.swipedScreen(swipeGesture:)))
swipeGesture.numberOfTouchesRequired = 2
swipeGesture.direction = [UISwipeGestureRecognizerDirection.up, UISwipeGestureRecognizerDirection.down]
window?.addGestureRecognizer(swipeGesture)
以及行动:
@objc func swipedScreen(swipeGesture: UISwipeGestureRecognizer)
Swift.print("hy")
【讨论】:
UISwipeGestureRecognizer 没有 numberOfTouchesRequired @dre_84w934 确实如此,请查看下面的链接。 developer.apple.com/documentation/uikit/…以上是关于如何为所有屏幕的 iPhone 应用程序添加垂直滑动手势?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 iphone 3.5 和 iphone 4 英寸屏幕(ios 6 和 ios7)设计 Single xib?