首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI InputAccessoryView

SwiftUI InputAccessoryView
EN

Stack Overflow用户
提问于 2021-07-13 21:55:54
回答 1查看 174关注 0票数 2

我试图在SwiftUI中构建一个聊天视图,并且我希望将输入视图附加到键盘上,这样当我通过拖动鼠标退出键盘时,视图就会随之移动。

当我使用UIKit时,我覆盖了ViewController的inputAccessoryView。SwiftUI也有类似的可能吗?

编辑:我已经看到我可以为这个文本字段添加一个UIKit TextField和一个InputAccessory。不过,这不是我想做的。我希望在我的inputAccessoryView视图中有一个全局SwiftUI,并将我的自定义输入视图添加为一个子视图,这样它总是可见的,而不是添加到我的TextField中。

EN

回答 1

Stack Overflow用户

发布于 2022-01-05 01:09:18

我看到了你想要的行为的两种可能的解决方案。

在某些情况下,automatically

  • in视图移开键盘 iOS 15,您可以在Swiftui中创建InputAccessoryView。

1:在swiftUI中,默认情况下视图有几个安全区域。其中之一是键盘安全区。当键盘被隐藏时,该区域占据设备的全屏,但当显示键盘时,该区域缩小到屏幕的非键盘区域。因此,在下面的示例代码中,当键盘出现时,文本字段应该移动到键盘上方,当键盘消失时,文本字段应该向下移动(当键盘处于较小的浮动模式时,这在iPad上不起作用)。

代码语言:javascript
复制
VStack {
    ScrollView {
        ForEach(0 ..< 50) { item in
            Text("Demo Text")
                .frame(maxWidth: .infinity)
        }
            
    }
    TextField("Enter Text", text: $messageText)
}

2:在iOS 15+中,可以在键盘位置创建工具栏。这在本质上就像InputAccessoryView在UIKit中所做的那样。这与方法1的不同之处在于,这里的视图仅在显示键盘时才会出现。对此的一个解释是,当有线或无线键盘连接到iPhone或iPad时,工具栏视图仍将显示在屏幕底部。

代码语言:javascript
复制
.toolbar {
    ToolbarItemGroup(placement: .keyboard) {
        Text("Apears at top of keyboard")
    }
}

因此,将1和2放在一起,这里有一个实现两者的示例。您可以在Xcode中运行它,以帮助理解这两个方法的行为。

代码语言:javascript
复制
VStack {
    ScrollView {
        ForEach(0 ..< 50) { item in
            Text("Demo Text")
                .frame(maxWidth: .infinity)
        }
            
    }
    TextField("Enter Text", text: $messageText)
}
.toolbar {
    ToolbarItemGroup(placement: .keyboard) {
        Text("Apears at top of keyboard")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68369733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档