当用户在新的 iOS 日期时间选取器中点击"Reset"时崩溃



我在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侧屏幕上做一些事情,例如

多一条链路

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

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

并且在log_sendAction中i检查

  • 如果iOS Version.可用(14..<15(
  • 并且如果action: Selector.包含(find:"reset:"(
  • 并且如果to target: Any?.包含(find:"WKDateTimePicker"(
  • 然后skeep调用原始originalSelector

最新更新