当用户在新的 iOS DateTimePicker 中点击“重置”时崩溃

Posted

技术标签:

【中文标题】当用户在新的 iOS DateTimePicker 中点击“重置”时崩溃【英文标题】:Crash when user tap "Reset" in new iOS DateTimePicker 【发布时间】:2020-11-09 19:35:43 【问题描述】:

我在WebView 中使用日期字段打开我们的html,但是在ios 14 上,当用户点击按钮reset 时,我发现了崩溃

Thread 1: EXC_BAD_ACCESS (code=2, address=0x36b90b7b50)

#0  0x00000001be6a60f8 in objc_msgSend ()
#1  0x00000001b680073c in -[WKDateTimePicker setDateTimePickerToInitialValue] ()
#2  0x00000001b6800134 in -[WKDateTimePicker reset:] ()

我认为是Apple Crash,但我该如何解决这种情况?也许有办法修复HTML,或者在iOS边上做点screen example

one more link

【问题讨论】:

崩溃信息是什么?你在 Xcode 中设置异常断点了吗? 线程 1:EXC_BAD_ACCESS(代码=2,地址=0x36b90b7b50) 一些这样的mail-archive.com/webkit-changes@lists.webkit.org/msg163824.html 根据日志,由于在 setDateTimePickerToInitialValue 中使用了自动释放的 NSString 而发生崩溃。要修复,请将变量设为 RetainPtr。 再一次,您的应用在哪里停止并出现异常断点? 【参考方案1】:

我用swizzling 方法解决了这个问题

let originalSelector = #selector(app.sendAction(_:to:from:for:))
let swizzledSelector = #selector(app.log_sendAction(_:to:from:for:))

log_sendAction我检查

如果 iOS Version .available(14.. 如果 action: Selector .contains(find: "reset:") 如果 to target: Any? .contains(find: "WKDateTimePicker") 然后 继续呼叫原始originalSelector

【讨论】:

以上是关于当用户在新的 iOS DateTimePicker 中点击“重置”时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

c#datetimepicker怎么改格式

javafx动态地在新选项卡中打开一个新的fxml文件

Heroku 图像在新的推送中消失了

在新的 DatePicker (iOS14) 中更改字体颜色

SwiftUI 在新的 Foundation Formatters iOS 15 中更改语言

iOS 8 - 通知在新的 Ad Hoc 版本中停止工作