【问题标题】:IOS: first tap not working just after loading viewIOS:加载视图后第一次点击不起作用
【发布时间】:2017-04-09 19:58:39
【问题描述】:

我最近注意到,我的每个应用程序视图都有一个特定的错误/行为:如果用户在视图出现时在 UI 组件上点击太快,点击就会被忽略。如果用户在点击之前稍等片刻,点击就会起作用。

情节提要用于情节提要,点击手势识别器位于 UIImageview 上并使用 IOS 10.2。

通过不同的论坛,我了解到以下选项:

  • 在主线程中嵌套“当前视图控制器”的调用
  • 在presentviewcontroller之前调用CFRunLoopWakeup
  • 以编程方式添加 TapGesturerecognizer
  • 更改“延迟触摸结束”和“延迟触摸开始”的状态
  • 禁用 3d 触摸选项,因为据报道在其他应用中会出现类似症状

以上都没有成功。 任何人都会在视图加载后第一次点击时遇到类似的问题?

[更新:我意识到这种不当行为并非特定于该应用程序。尝试两个测试:

  • 为 iPhone 和两个视图控制器控制器 A 和控制器 B 创建一个 xCode 项目。两个按钮:控制器 A 视图上的一个按钮转到控制器 B 视图和一个按钮返回控制器 B 视图返回到控制器一个看法。点按从视图 A 转到 B,再点按 B 并立即尝试点按按钮转到 B。第一次点按也不起作用。

  • 进入 iPhone 的设置。点击通知。按设置返回主设置屏幕,立即点击通知。如果足够快,第一次点击不起作用。第二次点击有效或在第一次点击之前稍等片刻。

现在的问题是:这似乎是 iPhone 应用程序中的一个常见问题。你知道某处是否会有一个共同的环境吗?或者这是给定IOS版本的常见错误? ]

斯蒂芬

【问题讨论】:

  • 什么时候添加点击手势?
  • 它是通过情节提要添加的,假设它是在没有引起这种不当行为的情况下添加的,是吗?
  • 您是否在主线程中执行网络或其他长时间 CPU 密集型任务?你做动画吗?
  • 谢谢。从一个屏幕切换到下一个屏幕时,我得到 20% 的 CPU 峰值,然后又回到 1%。存在被动动画,但是该错误也会出现在没有动画的视图上。从网络的角度来看,我切断了对服务器的所有访问以进行测试。观察到相同的行为......
  • 在获得真正有用​​的答案之前,您可能需要在这篇文章中添加展示此行为的最少代码。

标签: ios viewcontroller uitapgesturerecognizer


【解决方案1】:

这是一个普遍的问题(当视图控制器改变的那一刻,第一次点击会被忽略),但这不是一个只因为切换视图控制器的动画还没有完成的错误。如果您将动画设置为 false ,那么视图控制器可以立即响应您的点击,无论多快(无论如何都比您的手快):)

【讨论】:

  • 非常感谢!一旦动画设置为 False ,即使用户在视图刚出现时点击非常快,第一次点击也会开始工作。
  • 下次你应该用代码测试一下,代码总是善于调试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 2021-03-13
  • 2013-09-15
  • 2016-05-22
  • 2015-12-21
  • 1970-01-01
相关资源
最近更新 更多