如何检测 UITableView 上的“快速触摸”以切换到/从全屏?
Posted
技术标签:
【中文标题】如何检测 UITableView 上的“快速触摸”以切换到/从全屏?【英文标题】:how to detect a "quick touch" on a UITableView for the purpose of toggling to/from full screen? 【发布时间】:2011-03-25 05:30:49 【问题描述】:检测 UITableView 上的“快速触摸”以实现全屏切换的编码是什么?
这尤其是因为用户在 UITableView 上,他们仍然需要能够向上/向下拖动项目列表,并可能单击单元格/行以进行更深入的挖掘。但是如果他们快速触摸,那么这可能是在全屏模式(即导航栏和工具栏)之间切换的触发器。
背景 - 当我说切换到/从全屏时,我指的是执行described here,但是在这个答案中没有提到如何将它插入到 UITableView 的回调中在 UINavigationController 堆栈中显示。
【问题讨论】:
【参考方案1】:以下代码可能对您有所帮助
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
timeStampStart = event.timestamp;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
timeStampEnd = event.timestamp;
touchDuration = timeStampEnd - timeStampStart;
if(touchDuration > smallTimeStamp)
[super touchesEnded:touches withEvent:event];
else
[self zoomMyTableView];
【讨论】:
感谢 ypk - 请问这与正常选择表格中的行、滚动表格或深入了解单元格详细信息有何关系?触摸您突出显示的优先吗?如果是,是否需要做任何其他事情来确保触摸不是很短,以确保其他场景仍然可以正常进行?再次感谢 我缺少的另一件事是,您需要在toucesBegan
中添加[super touchesBegan:touches withEvent:event];
。您需要在 UITableView
子类中实现这些。通过这仍然您的表格视图滚动,选择将起作用,因为当触摸时间戳大于我们的最小值时,我们将触摸事件发送到super
。
实际上这对我不起作用-我正在使用模拟器进行测试-我无法在tableview中的行上单击模拟器并触发这些方法中的任何一个?所以我在 UINavigationController 中有一个 UITableView,并且表本身基于子类/自定义 UITableViewCell
我为你做了一个示例。如果需要,请告诉我您的邮箱,我会尽快邮寄给您。
its: greg dot hauptmann at gmail dot com ypk 谢谢 - 请记住我有一个 UITableView 显示在页面上但是......我认为这是使事情复杂化的原因(我不确定它是否无需大量工作即可使用 UITableView)【参考方案2】:
想把这个作为一个可能的答案,答案是没有相对直接的方法来实现我所要求的。这是在 UITableView 页面中检测到点击或双击的一种方式,该页面已经在拾取行触摸和向上/向下滚动等。
尚未验证是否是这种情况,但如果人们相信这是真的,他们可以投票赞成这个答案。 (也在等待 ypk 提供的样本,可能有答案)
【讨论】:
以上是关于如何检测 UITableView 上的“快速触摸”以切换到/从全屏?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测对 UITableView 的触摸,到目前为止似乎没有任何效果?
如何使用多个部分检测UITableViewCell的UIView上的触摸?