ios - 如何检测 iOS 版 SwiftUI 中的 TextField 何时失去焦点?

标签 ios swift swiftui

TextField("Name", text: $name)

我找到了这个方法

func focusable(_ isFocusable: Bool = true, onFocusChange: @escaping (Bool) -> Void = { _ in }) -> some View

但它仅适用于 MacOS,我如何为 iOS 做类似的事情?

最佳答案

您可以使用文本字段中存在的初始化程序init(_:text:onEditingChanged:onCommit:)。当您开始编辑和结束编辑时,您将触发一个操作。您可以在下面找到最小的示例。

import SwiftUI

struct ContentView: View {
    @State private var greeting: String = "Hello world!"
    var body: some View {
        TextField("Welcome", text: $greeting, onEditingChanged: { (editingChanged) in
            if editingChanged {
                print("TextField focused")
            } else {
                print("TextField focus removed")
            }
        })
    }
}

希望这有帮助。

关于ios - 如何检测 iOS 版 SwiftUI 中的 TextField 何时失去焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406224/

相关文章:

iOS 从 nib 加载 View

ios - 将自定义 UIView 锚定到相对于屏幕尺寸的屏幕底部

swift - 如何使用 Xcode 转换器创建 USDZ 文件?

swiftui - 如何在SwiftUI中检测targetEnvironment是否为iPadOS?

ios - NSData dataWithContentsOfURL 用于相机胶卷中的 URL

android - 在一个应用程序中结合 Xamarin 和 React Native

xcode - 为什么 switch 语句中的 'case' 是负缩进的?

ios - 使用容器自动布局

ios - SwiftUI TextField 最大长度

SwiftUI - 使用@main 设置 rootViewController