相关疑难解决方法(0)

SwiftUI - 正确使用 @available() 和 #available

我在下面的代码中遗漏了什么吗?

此应用程序在 iOS 15 设备上构建(macOS Monterey b5 / Xcode 13 b5)并完美执行 - 但在 iOS 14.7 设备上导致 SIGABRT...

import SwiftUI

struct ContentView: View {
    @State private var text = "This app causes a runtime error on ios 14.7"
    @available(iOS 15.0, *)
    @FocusState var isInputActive: Bool

    var body: some View {

        if #available(iOS 15.0, *) {
            TextEditor(text: $text)
                .focused($isInputActive)
        } else {    //  ios14 or <
            TextEditor(text: $text)
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

xcode ios swiftui

9
推荐指数
1
解决办法
2302
查看次数

Swiftui 应用程序在 iOS 14 / 15 上使用不同的 SearchBar (ViewModifier) 时崩溃

我在 iOS 14 上使用 SwiftlySearch,在 iOS 15 上使用 .searchable。

struct CompatibleSearchBarModifier: ViewModifier {
    
    @Binding var text: String
    
    @ViewBuilder
    func body(content: Content) -> some View {
        if #available(iOS 15.0, *) {
            content.searchable(text: self.$text, prompt: "Placeholder")
                
        } else {
            content.navigationBarSearch(self.$text, placeholder: "Placeholder", hidesSearchBarWhenScrolling: true, cancelClicked: {text = ""})
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序在基于 Crashlytics 的 iOS 14.7.1-14.8 设备上崩溃。不幸的是,我无法在 Xcode 13.2.1 上重现该问题,因为我无法在模拟器上使用这些 iOS 版本(我尝试了这个库但没有成功: https: //github.com/JinjunHan/iOSDeviceSupport)。有什么想法在这种情况下我可以做什么吗?

Crashed: com.apple.main-thread
0  libswiftCore.dylib             0x313dbc swift::ResolveAsSymbolicReference::operator()(swift::Demangle::__runtime::SymbolicReferenceKind, swift::Demangle::__runtime::Directness, int, void const*)
1  libswiftCore.dylib             0x33170c swift::Demangle::__runtime::Demangler::demangleSymbolicReference(unsigned char)
2  libswiftCore.dylib …
Run Code Online (Sandbox Code Playgroud)

xcode swift swiftui

2
推荐指数
1
解决办法
2489
查看次数

标签 统计

swiftui ×2

xcode ×2

ios ×1

swift ×1