无法弄清楚如何增大可单击区域以在swiftUI(iOS 13,Xcode 11.2)上打开键盘。我只能影响视觉外观,而不能影响用户可以单击的实际区域(可单击区域==占位符文本的fontSize是。)
在swiftUI中创建TextField时,可以使用frame()来增大占位符文本周围的大小,我也可以使用fontsize来使框内的字体变大,但是没有什么可以使可点击区域(调出键盘)变大而不会使字体变大。
//用于修改文本字段的代码
struct SignInModifier: ViewModifier {
func body(content: Content) -> some View {
return content
.padding(.all).font(.system(size: 18)).border(Color.purple).foregroundColor(Color.purple).shadow(radius: 2).frame(width: 350, height: 50)
}
}
//我在哪里叫修饰符
TextField("email address", text: $email).modifier(SignInModifier()).disableAutocorrection(true).keyboardType(.emailAddress)
如果您在框架内的任何位置单击时,键盘都已打开/您能够在textField中键入内容,我希望这样做。但是,我只需要单击占位符文本的上部即可键入TextField
答案 0 :(得分:0)
好的,所以我想出了一种解决方法,但并非完全是一种解决方案。只需将TextField嵌入按钮中,无论您在何处单击,它都将立即打开
答案 1 :(得分:0)
稍微变通但有效。
struct ContentView: View {
@State var name = ""
@State var isFocused = false
var body: some View {
ZStack {
HStack{
Text(name)
.font(.system(size: 50 , weight: .black))
.foregroundColor(isFocused ? Color.clear : Color.black)
Spacer()
}
TextField(name, text: $name , onEditingChanged: { editingChanged in
isFocused = editingChanged
})
.font(.system(size: isFocused ? 50 : 100 , weight: .black))
.foregroundColor(isFocused ? Color.black : Color.clear)
.frame(width: 300, height: isFocused ? 50 : 100 , alignment: .center)
.padding(.leading, isFocused ? 25 : 0 )
.padding(.trailing, isFocused ? 25 : 0 )
.padding(.top,isFocused ? 25 : 0 )
.padding(.bottom,isFocused ? 25 : 0 )
}.frame(width: 300)
.background(Color.red.opacity(0.3))
}
}