小编New*_*ian的帖子

Android Spinner OnItemSelected 仅在用户交互时选择

我知道这个问题已经被回答过多次,但我没有发现任何一个令人满意,而且肯定不优雅。

问题是 OnItemSelected 不仅在用户选择某个项目时被触发,而且在以编程方式设置选择时也会被触发。

一些答案建议在程序员为微调器设置值时设置一个标志。然而,有时其他 Android 代码会在您的代码之外设置该值。

android 设置该值的常见位置是在微调器实例化时。一些答案解决了这个特定问题。然而,Android 有很多地方会崩溃并重新实例化旋转器。追踪所有这些人并不优雅。

所以问题是:如何将 OnItemSelectedListener 代码仅附加到用户与 UI 交互所做的选择?

  • Spinner.setOnItemClickListener 似乎可以完美地回答这个问题,但谷歌已禁用它
  • AdapterView.setOnClickListener 似乎也是一个自然的候选者,但它也会生成运行时错误

下一步是扩展 Spinner 并开始覆盖方法,但这当然意味着弄乱 API(我不想这样做,或者我至少想让其他用户与我一起处理它)

android user-interaction spinner onitemselectedlistener

6
推荐指数
1
解决办法
2115
查看次数

错误检查:CloudKit MacCatalyst didReceiveRemoteNotification

我正在使用 MacCatalyst 将 iOS/iPadOS 应用程序移植到 MacOS。该应用程序以所有方式使用 CloudKit 和函数,除了一个:当从另一台设备提交 CloudKit 更新时,不会在 MacOS 版本上调用UIApplicationDelegate方法 。didReceiveRemoteNotification

在应用程序中起作用的事情:

  • CKDatabaseOperation向 CloudKit提交包括更新和订阅在内的 s
  • 从 CloudKit 手动检索数据库更新
  • UIApplicationDelegate方法在调用时didRegisterForRemoteNotificationsWithDeviceToken触发并UIApplication.isRegisteredForRemoteNotifications返回 trueUIApplication.registerForRemoteNotifications
  • 设置CKSubscription.NotificationInfo调用在 MacOS 中正确显示的警报通知
  • UNUserNotificationCenterDelegate方法,willPresent当调用警报通知并且应用程序在前台时
  • didReceiveRemoteNotification 在 iOS 和 iPad(物理设备)上

有没有人在使用 MacCatalyst 时调用过UIApplicationDelegate方法didReceiveRemoteNotification

更新:应用程序最终didReceiveRemoteNotification在发送更新 30 分钟后触发该方法,但在其他更新中,该方法即使在数小时后也不会触发。有任何想法吗?

macos ios cloudkit mac-catalyst

5
推荐指数
1
解决办法
495
查看次数