SwiftUI中几种关闭键盘的方式

在国内大多数app的操作中都有在带有输入框视图的页面中点击其他部分关闭键盘,因此给用户形成了一个操作习惯,于是在开发者自己开发的app中也需能够点击其他部分关闭键盘,不然会给用户造成困扰,在SwiftUI中,关闭弹出的键盘有几种常用的方式:

  1. 使用UIApplication.shared.sendAction方法:这是一种通用的方法,可以在任何地方使用。你只需要调用UIApplication.shared.sendAction并发送一个隐藏键盘的命令。

    UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    

这行代码的工作原理如下:

  1. UIApplication.shared:
  • UIApplication.shared是对当前应用实例的引用。它提供了许多控制和配置应用行为的方法。
  1. sendAction(_:to:from:for:)方法:
  • sendAction(_:to:from:for:)是一个发送动作或事件的方法。这个方法可以用来触发特定的行为或命令。
  1. #selector(UIResponder.resignFirstResponder):
  • #selector(UIResponder.resignFirstResponder)是一个选择器,指向resignFirstResponder方法。resignFirstResponderUIResponder类的一个方法,用于放弃响应者状态,通常意味着隐藏键盘。在iOS中,当一个控件(如文本框)成为第一响应者时,键盘会显示。当它放弃第一响应者状态时,键盘会隐藏。
  1. to: nil, from: nil, for: nil:
  • 这些参数定义了动作发送的目标、来源和上下文。在这种情况下,它们都被设置为nil,意味着不指定特定的目标或来源,而是允许应用自动确定应该响应此动作的对象。
  • 通过执行这段代码,应用会查找当前成为第一响应者的UI元素(通常是一个激活的文本字段)并让它放弃其第一响应者状态,从而导致键盘被隐藏。
  • 这种方法的优点是它在SwiftUI中非常通用,不依赖于特定的UI组件或视图结构。然而,需要注意的是,这种方法使用了UIKit的API,这在纯SwiftUI的环境中可能不是最理想的选择。随着SwiftUI的不断发展,可能会出现更多纯SwiftUI的解决方案。
  1. 使用@FocusState属性(iOS 15及以上):@FocusState是iOS 15引入的一个属性,允许你管理特定视图的焦点状态。你可以使用它来控制哪个输入字段应该是活动的,并相应地显示或隐藏键盘。

    @FocusState private var isInputActive: Bool
    
    // 在某个视图上
    TextField("输入点什么", text: $text)
        .focused($isInputActive)
    
    // 然后可以设置isInputActive为false来隐藏键盘
    isInputActive = false
    
  2. 使用dismiss方法:在某些情况下,例如在FormSheet中,你可以直接使用dismiss方法来关闭键盘。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叽里咕噜qiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值