首页 > 解决方案 > SwiftUI:限制键盘链接视图的方向

问题描述

在使用 Xcode 12 近 3 个月后,我一直面临的一件事是键盘改变了视图的方向。虽然有时它很有帮助,因为您不必根据键盘高度手动更改偏移量,但有时您只需要更多地控制视图的外观。

视频

在下面的视频中,当键盘弹出时,文本字段会向上移动,但移动的幅度太大了。我一直在尝试使用粘在键盘上的登录按钮来移动视图。

演示问题的视频。

代码

VStack(spacing: 40) {
    SignInView() // Consists 1 TextField, 1 SecureField and 1 Button
    
    Rectangle()
        .frame(width: screen.width, height: 2, alignment: .center)
        .foregroundColor(Color(.systemGray5))
        .padding(.top, 100)
    
    HStack(spacing: 0.0) {
        Text("Don't have an account? ")
        
        Button(action: {
            ...
        }) {
            Text("Create one.")
                .foregroundColor(Color("blue"))
        }
    }
    .font(.system(size: 16, weight: .regular))
}

我如何尝试解决它。 我试图通过应用偏移量来取消自动偏移量keyboard.current,其中键盘代表一个KeyboardResponder类,并将偏移量减去 20 以在键盘和登录按钮之间提供一点呼吸区域。不幸的是,这没有用。即使确实如此,我也确信这不是最好的解决方案。

@State private var keyboard = KeyboardResponder()

var body: some View {
    VStack(spacing: 40) {
        ...
    }
    .offset(y: keyboard.currentHeight != 0 ? (keyboard.currentHeight - 20) : 0)
}

标签: ioskeyboardswiftui

解决方案


推荐阅读