mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
修复iPad不弹窗的BUG,修复消息列表中由于iOS18 UIKit BUG导致的闪退
This commit is contained in:
parent
50d40104a4
commit
bce1375ac1
@ -137,7 +137,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
||||
}
|
||||
|
||||
private func notificatonHandler(userInfo: [AnyHashable: Any]) {
|
||||
let navigationController = Client.shared.currentNavigationController
|
||||
let viewController = Client.shared.currentSnackbarController
|
||||
func presentController() {
|
||||
let alert = (userInfo["aps"] as? [String: Any])?["alert"] as? [String: Any]
|
||||
let title = alert?["title"] as? String
|
||||
@ -182,17 +182,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
||||
if let url = url {
|
||||
items.append(url)
|
||||
}
|
||||
let controller = UIApplication.shared.keyWindow?.rootViewController
|
||||
let controller = Client.shared.window?.rootViewController
|
||||
let activityController = UIActivityViewController(activityItems: items,
|
||||
applicationActivities: nil)
|
||||
controller?.present(activityController, animated: true, completion: nil)
|
||||
}))
|
||||
alertController.addAction(UIAlertAction(title: NSLocalizedString("Cancel"), style: .cancel, handler: nil))
|
||||
|
||||
navigationController?.present(alertController, animated: true, completion: nil)
|
||||
viewController?.present(alertController, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
if let presentedController = navigationController?.presentedViewController {
|
||||
if let presentedController = viewController?.presentedViewController {
|
||||
presentedController.dismiss(animated: false) {
|
||||
presentController()
|
||||
}
|
||||
|
||||
@ -17,17 +17,23 @@ class Client: NSObject {
|
||||
super.init()
|
||||
}
|
||||
|
||||
var currentNavigationController: UINavigationController? {
|
||||
// TODO: iPad 取值不对
|
||||
let controller = UIApplication.shared.delegate?.window??.rootViewController as? BarkSnackbarController
|
||||
let nav = (controller?.rootViewController as? UITabBarController)?.selectedViewController as? UINavigationController
|
||||
return nav
|
||||
var window: UIWindow? {
|
||||
return UIApplication.shared.delegate?.window ?? nil
|
||||
}
|
||||
|
||||
var currentSnackbarController: BarkSnackbarController? {
|
||||
return self.window?.rootViewController as? BarkSnackbarController
|
||||
}
|
||||
|
||||
var currentTabBarController: StateStorageTabBarController? {
|
||||
// TODO: iPad 取值不对
|
||||
let controller = UIApplication.shared.delegate?.window??.rootViewController as? BarkSnackbarController
|
||||
return controller?.rootViewController as? StateStorageTabBarController
|
||||
guard let snackbarController = self.currentSnackbarController else {
|
||||
return nil
|
||||
}
|
||||
if #available(iOS 14, *), UIDevice.current.userInterfaceIdiom == .pad {
|
||||
return (snackbarController.rootViewController as? BarkSplitViewController)?.compactController
|
||||
} else {
|
||||
return snackbarController.rootViewController as? BarkTabBarController
|
||||
}
|
||||
}
|
||||
|
||||
let appVersion: String = {
|
||||
@ -67,7 +73,7 @@ class Client: NSObject {
|
||||
UIApplication.shared.open(url, options: [UIApplication.OpenExternalURLOptionsKey.universalLinksOnly: true]) { success in
|
||||
if !success {
|
||||
// 打不开Universal Link时,则用内置 safari 打开
|
||||
self.currentNavigationController?.present(BarkSFSafariViewController(url: url), animated: true, completion: nil)
|
||||
self.currentSnackbarController?.present(BarkSFSafariViewController(url: url), animated: true, completion: nil)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -8,13 +8,12 @@
|
||||
|
||||
import Material
|
||||
import UIKit
|
||||
|
||||
class BaseViewController<T>: UIViewController where T: ViewModel {
|
||||
let viewModel: T
|
||||
init(viewModel: T) {
|
||||
self.viewModel = viewModel
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
|
||||
self.view.backgroundColor = BKColor.background.primary
|
||||
}
|
||||
|
||||
@available(*, unavailable)
|
||||
@ -28,6 +27,8 @@ class BaseViewController<T>: UIViewController where T: ViewModel {
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.view.backgroundColor = BKColor.background.primary
|
||||
|
||||
if UIDevice.current.userInterfaceIdiom == .pad {
|
||||
navigationItem.largeTitleDisplayMode = .never
|
||||
} else {
|
||||
|
||||
@ -225,9 +225,7 @@ class MessageListViewController: BaseViewController<MessageListViewModel> {
|
||||
}
|
||||
|
||||
private func scrollToTop() {
|
||||
if self.tableView.visibleCells.count > 0 {
|
||||
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
|
||||
}
|
||||
self.tableView.setContentOffset(CGPoint(x: 0, y: -250), animated: false)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user