https://developer.apple.com/documentation/uikit/uiscrollview/keyboarddismissmode/interactive
在典型的UIScrollView
上,可以设置此属性,以使键盘与滚动条一起交互式退出。
有可能在SwiftUI中实现吗?如果无法在ScrollView
上直接使用它,我认为可以通过直接嵌入UIScrollView
来实现。 ?
答案 0 :(得分:5)
还要指出,jsbeginnerNodeJS的answer也可以在任何滚动视图中使用,例如List
。例如:
struct ContentView: View {
@ObservedObject private var viewModel = GistsViewModel()
var body: some View {
NavigationView {
VStack {
SearchBar(text: $viewModel.searchText)
List {
ForEach(viewModel.gists) { gist in
NavigationLink(destination: SafariView(url: gist.htmlURL)
.navigationBarTitle("")
.navigationBarHidden(true)) {
GistView(gist: gist)
}
}
}
.navigationBarTitle(Text("GitHub Gists"))
.edgesIgnoringSafeArea(.bottom)
}
}
}
init() {
UIScrollView.appearance().keyboardDismissMode = .interactive
}
}
答案 1 :(得分:3)
我将代码添加到ContentView的onAppear修饰符中。可以是onDrag
或.interactive
取决于您要关闭键盘的时间:
struct ContentView: View {
var body: some View {
Text("Hello World")
.onAppear {
UIScrollView.appearance().keyboardDismissMode = .onDrag
}
}
}
答案 2 :(得分:0)
看SwiftUI
文档似乎还不可能。我认为您最好的选择是将UIScrollView
包装到UIViewRepresentable
中,请参见here进行开发。我发现有一个tutorial for a UIScrollView here,您只需要在代码中添加KeyboardDismissmode
答案 3 :(得分:0)
是的,请参阅https://github.com/michaelhenry/KeyboardAvoider
将视图包装在“ KeyboardAvoider {}”中
或
使用ViewModifier“ .avoidKeyboard()”
答案 4 :(得分:-1)
是的
将此代码添加到init()
foreach($q as $row2){
print "<tr><td>".$row2['game_name']."</td>";
print "<td class=".$row2['mobile_version_sports.status'].">".$row2['OS.mobile_version_sports']."
</td>";
print "<td class=".$row2['status.android_sports'].">".$row2['OS.android_sports']."</td></tr>";
}