gpt4 book ai didi

swift - LargeTitles UIScrollView 不支持多个观察者实现_scrollViewWillEndDraggingWithVelocity :targetContentOffset

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:17 26 4
gpt4 key购买 nike

我使用以下代码在我的应用中实现了大标题:

if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always
} else {
// Fallback on earlier versions
}
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y <= 0 {
if #available(iOS 11.0, *) {
self.navigationItem.largeTitleDisplayMode = .always
} else {
// Fallback on earlier versions
}
} else {
if #available(iOS 11.0, *) {
self.navigationItem.largeTitleDisplayMode = .never
} else {
// Fallback on earlier versions
}
}
self.navigationController?.navigationBar.setNeedsLayout()
self.view.setNeedsLayout()
UIView.animate(withDuration: 0.01, animations: {
self.navigationController?.navigationBar.layoutIfNeeded()
self.view.layoutIfNeeded()
})
}

我能够在标签栏上的 View 之间成功切换,但是当我将 View 推到标签栏 Controller 的顶部然后使用此代码将其弹出时:

_ = self.navigationController?.popViewController(animated: true)

当我再次在标签栏上的 View 之间切换时,我遇到了这个崩溃:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“错误:UIScrollView 不支持多个观察者实现 _scrollViewWillEndDraggingWithVelocity:targetContentOffset:”

最佳答案

这不是解决方案,而是您需要在代码中调查的潜在问题。我收到了同样的错误消息(UIScrollView 不支持多个观察者实现 _scrollViewWillEndDraggingWithVelocity:targetContentOffset),我注意到我做错了什么。我在使用 NavigationView 的 SwiftUI 应用程序中收到此错误消息。

我犯的错误是 ParentView 在根目录下有一个 Navigation View。我使用 NavigationLink 移动到 ChildView,它也有一个 NavigationView 作为根。这是它在代码中的样子:

import SwiftUI

@main
struct TestApp: App {
var body: some Scene {
WindowGroup {
ParentView()
}
}
}

struct ParentView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: ChildView()) {
Text("Parent view")
}
}
.navigationTitle("Parent")
}
}
}

struct ChildView: View {
var body: some View {
List {
ForEach(0 ..< 5) { _ in
Text("Child view")
}
}
.navigationTitle("Child")
}
}

最初这是 ChildView 的样子:

struct ChildView: View {
var body: some View {
NavigationView {
List {
ForEach(0 ..< 5) { _ in
Text("Second screen")
}
}
.navigationTitle("Second")
}
}
}

请注意我是如何尝试推送一个本身嵌入在 NavigationView 中的 View 的。如第一个片段所示删除它,处理错误消息。您可以尝试调查一下,也许您只是在 UIKit 而不是 SwiftUI 中犯了同样的错误。

关于swift - LargeTitles UIScrollView 不支持多个观察者实现_scrollViewWillEndDraggingWithVelocity :targetContentOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871426/

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