ios - SwiftUI 中的 textFieldDidBeginEditing 和 textFieldDidEndEditing
问题描述
我如何使用这些方法textFieldDidBeginEditing
以及textFieldDidEndEditing
苹果的默认 TextField 结构。
解决方案
TextField
有onEditingChanged
和onCommit
回调。
例如:
@State var text = ""
@State var text2 = "default"
var body: some View {
VStack {
TextField($text, placeholder: nil, onEditingChanged: { (changed) in
self.text2 = "Editing Changed"
}) {
self.text2 = "Editing Commited"
}
Text(text2)
}
}
中的代码onEditingChanged
仅在用户选择时调用textField
,并且onCommit
仅在点击返回、完成等时调用。
编辑:当用户从一个更改TextField
为另一个时,先前选择TextField
的 'sonEditingChanged
被调用一次,changed
(参数) equaling false
,并且刚刚选择TextField
的 'sonEditingChanged
也被调用,但参数 equaling true
。不会为先前选择的onCommit
调用回调。TextField
编辑2:
添加一个示例,如果您想committed()
在用户点击 return 或 changes 时调用函数TextField
,以及changed()
当用户点击 时TextField
:
@State var text = ""
var body: some View {
VStack {
TextField($text, placeholder: nil, onEditingChanged: { (changed) in
if changed {
self.changed()
} else {
self.committed()
}
}) {
self.committed()
}
}
}
推荐阅读
- php - 你如何在 Laravel 中减去 2 个 SQL 字段来输出?
- java - 将 MapBox 导航添加到我的 Android Studio 项目时出现问题
- impala - 从表中获取最大值
- javascript - 在屏幕上保持分数和水平
- azure - 如何在 Azure 数据工厂的 DataFlow 中获取管道的元数据?想要创建调试管道
- python - Mac M1如何使用python2.7的虚拟环境?
- node.js - 在 React Native 中设计的 IOS 应用程序停止接收信号通知
- c# - Gmap删除一些信息
- linux - Apache2 错误日志中的“proxy_fcgi:error”是什么意思?
- python - PyDev eclipse 无法导入自己的模块