【发布时间】:2016-04-28 13:23:24
【问题描述】:
我一直在尝试复制 iPhone 仪表板主屏幕上的按钮。我想要达到的目标如下:
- 一个简单的按钮,带有图像及其所有 UIButton 属性。
- 最重要的是,长按手势识别器。长按时,按钮会抖动,但您仍然可以使用它。
我已经设法做到了所有这些,但我面临以下问题,Apple 可以解决这个问题,而我(还)不能:
在正常点击时,操作系统会稍等片刻以确保它不是长按、双击或任何我猜的。在等待足够长的时间之前,它无法确定这不是一个特殊的手势。因此,每次点击该按钮都会被注册,但一切都会延迟大约 1.5 秒。
这是非常糟糕的用户体验,但是当我在主屏幕上点击一个应用程序时,它是瞬间的(即使应用程序被杀死)。但是,如果我长按,它会正确注册。
我的没有。我在这里俯瞰什么?
我有这个:
- 两个 UIButtons 稍微重叠,想象一下应用程序图标和角落上的“删除应用程序”按钮。 (蓝色和紫色)
- 正好包含这两个 UIButton 的 UIView。 (绿色)
- 该 UIView 上的 UILongPressGestureRecognizer(未显示)
只有在手势达到“开始”状态时才会调用长手势代码,就像主屏幕上的 iOS 行为一样。在这个过程的早期阶段。
我试过摆弄不同的属性和设置,但我无法让它工作。你们中有人做到了吗?正确的设置是什么?
【问题讨论】:
-
仪表板我假设你的意思是跳板。您已经确定了响应问题,即 UIButton 上的长按识别器。 IMO 会更好,从延迟的角度来看,只使用按钮而不使用手势。利用按钮带来的事件。在着陆时启动一个计时器,该计时器将触发图像更改并开始摇摆效果。如果计时器尚未触发,则在内部触摸或外部触摸拖动事件会使计时器无效。使用边缘插图来适应图像随图标徽章的变化。
标签: ios uibutton tap long-press uilongpressgesturerecogni