FocusState, SubmitTextField 的使用

news2024/11/20 6:18:29

1. FocusState 输入文本添加焦点状态

  1.1 实现

/// 输入文本焦点状态
struct FocusStateBootcamp: View {
    // 使用枚举
    enum OnboardingFields: Hashable{
        case username
        case password
    }
    
    //@FocusState private var usernameInFocus: Bool
    @State private var username: String = ""
    //@FocusState private var passwordInFocus: Bool
    @State private var password: String = ""
    // 声明变量
    @FocusState private var fieldInFocus: OnboardingFields?
    
    var body: some View {
        
        VStack(spacing: 30){
            TextField("Add your name here...", text: $username)
                .focused($fieldInFocus, equals: .username)
            //.focused($usernameInFocus)
                .padding(.leading)
                .frame(height: 55)
                .frame(maxWidth: .infinity)
                .background(Color.gray.brightness(0.3))
                .cornerRadius(10)
            // 安全输入文本
            SecureField("Add your password here...", text: $password)
                .focused($fieldInFocus, equals: .password)
            //.focused($passwordInFocus)
                .padding(.leading)
                .frame(height: 55)
                .frame(maxWidth: .infinity)
                .background(Color.gray.brightness(0.3))
                .cornerRadius(10)
            
            //Button("Toggle Focus State") {
            //    usernameInFocus.toggle()
            //}
            Button("Sign up 🚀") {
                //passwordInFocus.toggle()
                let usernameIsValid = !username.isEmpty
                let passwordIsValid = !password.isEmpty
                
                if usernameIsValid && passwordIsValid{
                    print("Sign up")
                    fieldInFocus = nil
                }else if usernameIsValid{
                    //usernameInFocus = false
                    //passwordInFocus = true
                    fieldInFocus = .password
                }else {
                    //usernameInFocus = true
                    //passwordInFocus = false
                    fieldInFocus = .username
                }
            }
        }
        .padding(40)
//        .onAppear {
//            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
//                self.usernameInFocus = true
//            }
//        }
    }
}

  1.2 效果图:

2. SubmitTextField 根据输入文本设置,修改输入键盘内容

  2.1 实现

///根据输入文本设置,修改输入键盘内容   iOS 15 版本新操作功能
struct SubmitTextFieldBootcamp: View {
    @State private var text: String = ""
    
    var body: some View {
        VStack {
            TextField("Placeholder...", text: $text)
            // 修改返回按键
                .submitLabel(.route)
            // 单击返回按钮时执行操作
                .onSubmit {
                    print("Something to the console!")
                }
            TextField("Placeholder...", text: $text)
            // 修改返回按键
                .submitLabel(.next)
            // 单击返回按钮时执行操作
                .onSubmit {
                    print("Something to the console!")
                }
            TextField("Placeholder...", text: $text)
            // 修改返回按键
                .submitLabel(.search)
            // 单击返回按钮时执行操作
                .onSubmit {
                    print("Something to the console!")
                }
        }
    }
}

  2.2 效果图: 

            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两分钟python发个邮件

python简单发个邮件 直接上代码测试 之前spring boot简单发送发送个邮件大约5min,ennn这个python发个邮件两三分钟吧 直接上代码 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMETextclass MailTest(object):def…

Flink 在新能源场站运维的应用

摘要:本文整理自中南电力设计院工程师、注册测绘师姚远,在 Flink Forward Asia 2022 行业案例专场的分享。本篇内容主要分为四个部分: 1. 建设背景 2. 技术架构 3. 应用落地 4. 后续及其他 Tips:点击「阅读原文」免费领取 5000CU*…

Vue localhost 从 http 307 到 https

Vue localhost 从 http 307 到 https HTTP 307 与 HSTS HTTP 307中间人攻击HSTS - HTTP Strict Transport Security 如何解决问题 Vue localhost 从 http 307 到 https 一个 Vue2 项目之前本地都是通过 HTTP 的 localhost 访问(如下) 后来突然无法访问了, 提示的错误内容是 E…

静电接地桩的设计和施工

静电接地桩是用于将静电荷引导到地下的装置,以确保工作环境。以下是一般静电接地桩设计的一些建议和步骤: 1. 选择合适的位置:静电接地桩应该位于静电产生源附近,并接近地面。可以选择在室内或室外,但要确保容易维护和…

web中引入live2d的moc3模型

文章目录 前言下载官方sdk文件使用ide编译项目(vsCode)项目初始化使用vsCode项目树介绍使用live server运行index页面 演示导入自己的模型并显示modelDir文件resources文件夾案例模型修改modelDir然後重新打包項目運行 前言 先跟着官方sdk调试一遍&…

14.live555mediaserver-play请求与响应

live555工程代码路径 live555工程在我的gitee下(doc下有思维导图、drawio图): live555 https://gitee.com/lure_ai/live555/tree/master 章节目录链接 0.前言——章节目录链接与为何要写这个? https://blog.csdn.net/yhb1206/art…

基于C/S架构工作原理序号工作步骤和理论的区别

基于C/S架构工作原理序号工作步骤和理论的区别 SSH 概念 对称加密linux 系统加密,就是加密和揭秘都是使用同一套密钥。 非对称加密有两个密钥:“私钥”和“公钥”。私钥加密后的密文,只能通过对应的公钥进行揭秘。而通过私钥推理出公钥的…

深入解析浏览器Cookie(图文码教学)

深入解析浏览器Cookie 前言一、什么是 Cookie?二、Cookie的特点二、如何创建 Cookie?三、服务器如何获取 Cookie四、Cookie 值的修改4.1 方案一4.2 方案二 五、浏览器查看 Cookie六、Cookie 生命控制七、Cookie 有效路径 Path 的设置八、案例:Cookie 练…

183_Power BI 折线图之平滑线性类型

183_Power BI 折线图之平滑线性类型 一、背景 曾几何时,为了在 Power BI 让折线图显示出平滑曲线,各路大佬是尽显神通。如今时间来到 2023 年 7 月,刚刚更新的 Power BI 已经支持折线图的平滑曲线。让我们来看看最终效果。 同时&#xff0c…

【SpringBoot3】--04.核心原理

文章目录 SpringBoot3-核心原理1.事件和监听器1.1生命周期监听1.1.1 监听器-SpringApplicationRunListener1.1.2生命周期全过程 1.2事件触发时机1.2.1各种回调监听器1.2.2完整触发流程 1.3SpringBoot事件驱动开发 2.自动配置原理2.1入门理解2.1.1自动配置流程2.1.2SPI机制2.1.3…

apache ranger

简介: ranger 是一个用于启用、监控和管理跨hadoop平台的全面的数据安全框架。 ranger的愿景是在hadoop系统中提供全面的安全管理。随着yarn的出现,hadoop 平台能够支持真正的数据糊架构。企业能够在多租户环境中运行多个任务负载。hadoop 数据安全需要…

面向对象编程/原型及原型链

一.面向对象 (1)对象是什么?为什么要面向对象? 通过对代码的抽象,进而描述单个种类物体的方式. (2)特点:面向对象-逻辑上迁移更加灵活,代码的复用性更高,高度的模块化. (3)对象的理解 1.对象是对于单个物体的简单抽象; 2.对象是容器,封装了属性和方法 **属性:对象状态…

Python官方文档中Availability: not Emscripten, not WASI是什么意思?

在我们阅读Python官方文档中,当某个模块或特性的文档中写着 "Availability: not Emscripten, not WASI" 时,它表示该模块或特性在 Emscripten 和 WASI 环境中不可用。 Emscripten 是一个工具链,用于将C和C代码编译为WebAssembly&am…

【Python从入门到进阶】28、xpath的安装以及使用

接上篇《27、Handler处理器使用及代理和Cookie登录实现》 上一篇我们讲解了urllib中Handler处理器的基本使用,以及实现代理访问和Cookie的登录。本篇我们来讲解HTML文档解析中的核心插件xpath的安装及使用。 一、xpath介绍 XPath是由W3C(World Wide We…

kotlin中使用Room数据库(包含升降级崩溃处理)

目录 1.导入依赖库 2.数据实体类 3.数据访问对象 (DAO) 4.数据库类 5.调用DAO里面的“增、删、改、查”方法 6.数据库升降级处理 升级(保存数据库历史数据): 升级(不保存数据库历史数据): 降级&…

剑指 offer 数学算法题:数值的整数次方

题目描述: 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 分析: 直接计算法,通过判断 n 的正负,若为负数, x 即…

无法加载文件\venv\Scripts\Activate.ps1,因为在此系统上禁止运行脚本

一、问题发生 运行环境Windows 10、python 3.11.1、IDE VScode 当然你可能使用了其他IDE,例如pycharm等,不过没有关系解决问题的方法都是一致的。 报错信息如下图所示: actvivate.ps1这个脚本文件是用来激活python虚拟环境的。 其实&…

LabVIEW开发图像采集和图像处理程序

LabVIEW开发图像采集和图像处理程序 扫描电子显微镜(SEM)是一种功能强大的工具,广泛用于高分辨率的生物和半导体样品检测。然而,对于大面积或3D成像,SEM成像是一个耗时的过程。MBSEM旨在通过同时扫描多个像素来减少采…

spring5源码篇(10)——spring-aop代理过程

spring-framework 版本:v5.3.19 文章目录 1、ProxyFactory1.1、createAopProxy() 创建AopProxy1.2、getProxy() 创建代理对象1.3、JdkDynamicAopProxy#invoke 代理逻辑1.3.1、advised.getInterceptorsAndDynamicInterceptionAdvice() 匹配添加的advisor并转化成所需…

集群基础3——haproxy负载均衡apache

文章目录 一、环境说明二、安装配置httpd三、安装配置haproxy四、验证http负载均衡五、配置https负载均衡六、haproxy网页监控6.1 监控参数详解6.2 页面操作 一、环境说明 使用haproxy对apache进行负载均衡。 主机IP角色安装服务真实IP:192.168.161.129VIP&#xff…