Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.05k stars 1.37k forks source link

模拟器上,点击按钮经常遇到没响应,点击无效。 #1466

Closed pangchaohui closed 1 year ago

pangchaohui commented 1 year ago

Bug 表现 模拟器上,点击按钮经常遇到没响应,点击无效。

截图

image

如何重现 有时点击无效,比如点击左上角返回按钮。点击无效后,如果隔一两分钟再点击,又正常。

预期的表现 正常情况下,点击按钮应该能响应

其他信息

MoLice commented 1 year ago

把 preventConcurrentNavigationControllerTransitions = NO 试试看呢 ?

而且还要看你是不是 M1 芯片、是不是项目里依赖的库都有 arm64 模拟器架构。

pangchaohui commented 1 year ago

把 preventConcurrentNavigationControllerTransitions = NO 试试看呢 ?

而且还要看你是不是 M1 芯片、是不是项目里依赖的库都有 arm64 模拟器架构。

preventConcurrentNavigationControllerTransitions改为NO,还是有问题。目前是 M1 芯片电脑

eric0815 commented 1 year ago

把 preventConcurrentNavigationControllerTransitions = NO 试试看呢 ?

而且还要看你是不是 M1 芯片、是不是项目里依赖的库都有 arm64 模拟器架构。

你好,我的也是M1 芯片电脑,也存在楼主的问题,而且不仅仅是导航栏上的按钮,UIToolbar里的UIBarButtonItem也存在不响应的问题。 不响应的按钮截图

之前为了用模拟器,在podfile中加了下面一段。 post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| *config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator]"] = "arm64"** end end end

请问有解决方案吗,谢谢大神。

MoLice commented 1 year ago

这是苹果的事情,和 QMUI 无关。简单来说有两种方式任选其一:

  1. 让 Xcode 以 Rosetta 模式运行。
  2. 让项目里所有库都以 xcframework 方式打包以支持 arm64。

如果两种都不选,而是按照 @eric0815 说的添加 config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator]"] = "arm64",那么,由于 App 以 x86_64 架构运行,但是模拟器又是 arm64 架构运行,模拟器和 App 通过 XPC 进行通信,导致一些依赖计时器判断的逻辑(系统各种点击,包括像 UIControl(QMUI).qmui_preventsRepeatedTouchUpInsideEvent 的防重复点击功能)会出问题,就会出现所说的点击没反应的现象——这种有复杂的解决方式但没有简单的解决方式,这里不展开细说。