- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用以下代码在我的应用中实现了大标题:
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/
我是一名优秀的程序员,十分优秀!