gpt4 book ai didi

ios - UIAlertControllerAnimatedTransitioning 内部崩溃

转载 作者:行者123 更新时间:2023-11-29 00:01:22 25 4
gpt4 key购买 nike

我从以下方法中抛出的异常中获取崩溃报告:

-[_UIAlertControllerAnimatedTransitioning _animateTransition:completionBlock:]

它发生在_UIAlertControllerTransitioning.m:146

崩溃中包含的唯一信息是:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0

完整的调用堆栈如下所示:

Last Exception Backtrace:
0 CoreFoundation 0x1b33bb38 __exceptionPreprocess + 124 (NSException.m:165)
1 libobjc.A.dylib 0x1a5c3062 objc_exception_throw + 34 (objc-exception.mm:521)
2 CoreFoundation 0x1b33ba14 +[NSException raise:format:arguments:] + 92 (NSException.m:131)
3 Foundation 0x1bc31528 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 88 (NSException.m:157)
4 UIKit 0x20b4a706 -[_UIAlertControllerAnimatedTransitioning _animateTransition:completionBlock:] + 700 (_UIAlertControllerTransitioning.m:146)
5 UIKit 0x20b4a052 -[_UIAlertControllerAnimatedTransitioning animateTransition:] + 530 (_UIAlertControllerTransitioning.m:102)
6 UIKit 0x208a0c3e __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 3342 (UIPresentationController.m:850)
7 UIKit 0x207e697e _runAfterCACommitDeferredBlocks + 272 (UIApplication.m:2468)
8 UIKit 0x207d9c8e _cleanUpAfterCAFlushAndRunDeferredBlocks + 520 (UIApplication.m:2447)
9 UIKit 0x2055b8b8 _afterCACommitHandler + 108 (UIApplication.m:2499)
10 CoreFoundation 0x1b2f77fe __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 16 (CFRunLoop.c:1802)
11 CoreFoundation 0x1b2f5a50 __CFRunLoopDoObservers + 278 (CFRunLoop.c:1898)
12 CoreFoundation 0x1b2f6012 __CFRunLoopRun + 1354 (CFRunLoop.c:2849)
13 CoreFoundation 0x1b2491aa CFRunLoopRunSpecific + 466 (CFRunLoop.c:3113)
14 CoreFoundation 0x1b248fcc CFRunLoopRunInMode + 100 (CFRunLoop.c:3143)
15 GraphicsServices 0x1c9f3b3c GSEventRunModal + 76 (GSEvent.c:2245)
16 UIKit 0x205cba4e UIApplicationMain + 146 (UIApplication.m:4089)
17 OnBeat 0x8fd9c main + 48 (AppDelegate.swift:15)
18 libdyld.dylib 0x1aa364e6 _dyld_process_info_notify_release + 26 (dyld_process_info_notify.cpp:327)

最佳答案

来自 this post ,来自 _UIAlertControllerTransitioning.m 行断言的实际异常描述是:

UIAlertController is expected to have a visual style during transitioning

发生这种情况似乎有几个原因:

1。您尝试在其上显示警报的窗口未配置正确的大小

基于此this post确保您等到 application:didFinishLaunchingWithOptions: 来创建您的窗口。

而不是在你的应用委托(delegate)中这样的东西:

class AppDelegate: UIResponder, UIApplicationDelegate {
// BAD DON'T DO THIS
var window: UIWindow? = UIWindow(frame: UIScreen.main.bounds)
}

确保像这样创建窗口:

class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?

open func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
// Setup rootViewController and whatever other properties
self.window?.makeKeyAndVisible()
}
}

2。您正在尝试在外部屏幕上显示警报(通过 HDMI 或 Airplay)

我通过首先检查 View Controller 的窗口是否是关键窗口来避免这种情况:

guard let window = self.view?.window else {
print("Attempt to present alert on view controller without a window")
return
}

guard window.isKeyWindow else {
print("Attempt to present alert on window that is not the key window")
return
}

// Present alert

关于ios - UIAlertControllerAnimatedTransitioning 内部崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49416200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com