Tag: swipe

如何使用UIScrollView触发UITableViewCell中的滑动操作

最近,我想向UITableViewCells添加快速操作,而不是使用按钮而是使用平移手势,例如可以在许多邮件应用程序中找到的动作。 UIScrollView是最好和最简单的方法。 首先,您将看到如何在UITableViewCell中设置UIScrollView,以显示操作的自定义视图。 然后,您将看到如何通过实现UIScrollViewDelegate通过平移手势执行操作。 1. UITableViewCell设置 首先,创建UITableViewCell的子类。 容器视图将是我们的单元格内容。 动作视图和标签将是滚动显示的视图。 class SwipeCell: UITableViewCell { var scrollView: UIScrollView! var containerView: UIView! var actionView: UIView! var actionLabel: UILabel! } 在初始化程序中调用的方法中,我们实例化此视图并将其添加到视图层次结构中,如下所示: contentView 滚动查看 动作视图 动作标签 containerView 对于scrollView,我们要隐藏滚动指示器。 当用户结束拖动时,我们还希望快速减速。 注意,我们需要设置contentInset以便在scrollView的填充中显示actionView。 func setup() { scrollView = UIScrollView(frame: bounds) scrollView.autoresizingMask = [.flexibleWidth, .flexibleHeight] scrollView.contentSize = bounds.size scrollView.contentInset = UIEdgeInsets( top: 0, left: […]

时间戳和计算滑动的速度

嘿,我知道已经有几个关于这个的文章 – 但我仍然无法find一个适当的答案,我遇到的问题。 刚开始cocoa和iOS,我正在开发我的第一个iOS游戏。 在这个游戏中,我希望能够计算用户的滑动速度。 我毫不费力地find了滑动运动中连续触摸之间的距离,但是难以确定触摸之间所经过的时间 在touchesMoved:我做了当前的触摸计算,以及作为一个UITouch跟踪最近以前logging的触摸 在touchesEnded:我现在想要计算刷卡的速度,但是当我做这样的事情: double timeDelay = event.timestamp – self.previousTouch.timestamp; 这总是返回0。 但是,使用gcc我能够看到两个时间戳实际上是不一样的。 此外,在检查时,我看到这些事件的NSTimeInterval值在〜10 ^( – 300)的范围内。 这似乎很奇怪,因为NSTimeInterval应该报告几秒钟,因为系统启动不是? 我也试着跟踪上一次触摸的NSDate,并与[NSDate timeIntervalSinceNow]结合使用。 这产生了更奇怪的结果,每次返回大约6的值。 同样,由于timerIntervalSinceNow返回一个NSTimeInterval ,这个值非常奇怪。 什么是我不了解时间戳? 事件? 任何帮助,将不胜感激! 谢谢你的时间 一些支持代码: 在sampleController.h中: @property(nonatomic) UITouch* previousTouch @property(nonatomic) UITouch* currentTouch 在sampleController.m中: @synthesize previousTouch = _previousTouch, currentTouch = _currentTouch; … – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { self.currentTouch = […]

平移手势会干扰滚动

我有三个视图控制器是UIScrollView的一部分。 我希望能够在三者之间滑动,尽pipe其中一个视图控制器有一个UIPanGestureRecognizer。 我使用这个平移手势识别器来允许用户上下拖动他们的手指来增加和减小矩形UIView的高度。 因此,这个UIPanGestureRecognizer只需要知道向上/向下平移,滚动视图可以使用水平平移。 一个例子就是主屏幕。 您可以向左或向右滑动,也可以向下滑动以获得聚光灯。 我想要这种机制。 这是我的泛代码: – (void)pan:(UIPanGestureRecognizer *)aPan; // When pan guesture is recognised { CGPoint location = [aPan locationInView:self.view]; // Location of finger on screen CGRect secondRect = CGRectMake(210.0, 45.0, 70.0, 325.0); // Rectangles of maximimum bar area CGRect minuteRect = CGRectMake(125.0, 45.0, 70.0, 325.0); CGRect hourRect = CGRectMake(41.0, 45.0, 70.0, […]

SWRevealViewController和TableView – 刷卡删除不起作用

我添加了SWRevealViewController到我的应用程序,以及汉堡堆栈访问我的菜单。 我的应用程序有一个主应用程序视图的UITableView。 我想允许用户使用滑动删除function从列表中删除项目。 我启用了滑动删除,并添加了一个方法调用来处理这个。 我注意到这个方法永远不会被调用。 不知道如何得到这个工作。 任何帮助将不胜感激。 我被要求提供一个代码示例。 我没有对SWRevealViewController标准源代码进行任何更改。 在我的TableView代码中,我添加了以下内容: – (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } 通常,上面的代码应该显示一个删除button,当你做一个从左到右的滑动。 但是,这并没有发生。 我的猜测是SWRevealViewController正在吃平移手势识别器。