当用户在新的 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 中点击“重置”时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
在新的 DatePicker (iOS14) 中更改字体颜色