iOS 11 在 EventKitUI 上崩溃-[EKCalendarChooser _selectAllCalendarsAndStores:]

Posted

技术标签:

【中文标题】iOS 11 在 EventKitUI 上崩溃-[EKCalendarChooser _selectAllCalendarsAndStores:]【英文标题】:iOS 11 Crash on EventKitUI -[EKCalendarChooser _selectAllCalendarsAndStores:] 【发布时间】:2017-10-12 00:08:47 【问题描述】:

这个崩溃只发生在 ios 11 上,我不知道如何修复它。

点击 iOS 11 的 EKCalendarChooser 类的新工具栏上的 [显示全部] 按钮时会发生崩溃,但它的 selectionStyle 设置为 .single

致命异常:NSInternalInconsistencyException 样式无效

Fatal Exception: NSInternalInconsistencyException
0  CoreFoundation                 0x1830e3d38 __exceptionPreprocess
1  libobjc.A.dylib                0x1825f8528 objc_exception_throw
2  CoreFoundation                 0x1830e3c0c +[NSException raise:format:]
3  Foundation                     0x183a72c24 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4  EventKitUI                     0x1941ad908 -[EKCalendarChooser _selectAllCalendarsAndStores:]
5  EventKitUI                     0x1941a6384 -[EKCalendarChooser showAllButtonPressed]
6  UIKit                          0x18c52820c -[UIApplication sendAction:to:from:forEvent:]
7  UIKit                          0x18c68253c -[UIBarButtonItem(UIInternal) _sendAction:withEvent:]
8  UIKit                          0x18c52820c -[UIApplication sendAction:to:from:forEvent:]
9  UIKit                          0x18c52818c -[UIControl sendAction:to:forEvent:]
10 UIKit                          0x18c512f4c -[UIControl _sendActionsForEvents:withEvent:]
11 UIKit                          0x18c5130b4 -[UIControl _sendActionsForEvents:withEvent:]
12 UIKit                          0x18c527a80 -[UIControl touchesEnded:withEvent:]
13 UIKit                          0x18cb73ec8 _UIGestureEnvironmentSortAndSendDelayedTouches
14 UIKit                          0x18cb6f488 _UIGestureEnvironmentUpdate
15 CoreFoundation                 0x18308b8b8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
16 CoreFoundation                 0x183089270 __CFRunLoopDoObservers
17 CoreFoundation                 0x18308982c __CFRunLoopRun
18 CoreFoundation                 0x182faa2d8 CFRunLoopRunSpecific
19 GraphicsServices               0x184e3bf84 GSEventRunModal
20 UIKit                          0x18c557880 UIApplicationMain
21 MyApp1                         0x104d92be4 main (AppDelegate.swift:15)
22 libdyld.dylib                  0x182ace56c start

我想知道有没有办法隐藏新工具栏?

===== 2017 年 11 月 19 日编辑

添加了显示新工具栏的屏幕截图:

一旦selectedCalendars 留空,就会显示新的工具栏。一旦点击 [显示全部] 按钮,就会发生崩溃。

【问题讨论】:

对于那些有同样问题的人,您可以为 selectedCalendars 指定一个(新创建的)日历,以防止显示新的工具栏。 但是如果没有设置selectedCalendars,我仍然不知道如何处理[Show All]错误。 我在 iOS 11.1 beta 上有一个不同的,但也与 EKCalendarChooser 相关的问题,在呈现视图控制器时会崩溃。可能是iOS问题。 google.co.jp/amp/s/9to5mac.com/2017/10/23/… 我面临与 OP 相同的问题。有没有人找到防止崩溃的解决方案? @user826955 不给selectedCalendars设置一个空列表会隐藏新的工具栏。 【参考方案1】:

我遇到了同样的错误,并发现了一种奇怪但出奇有效的解决方法。结果是,如果您在显示视图控制器之前清除选定的日历集,工具栏就会消失,从而避免崩溃。

calendarChooser.selectedCalendars = Set();

【讨论】:

以上是关于iOS 11 在 EventKitUI 上崩溃-[EKCalendarChooser _selectAllCalendarsAndStores:]的主要内容,如果未能解决你的问题,请参考以下文章

iOS11 看门狗超时崩溃(0x8badf00d)但代码不在堆栈上

使用 NSString 方法 boundingRectWithSize 时在 iOS 11 上崩溃

ios 11 的商店服务崩溃

iOS 11.1.2 日期错误在应用程序中崩溃

使用 XCode 8 修复 iOS 11 崩溃

XCode 6项目在ios 7.1上segue后崩溃