You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在UITextView为空/非空状态切换时触发动画?

实现UITextView状态切换时仅触发一次动画

你可以通过记录上一次的空状态来避免重复触发动画,具体实现步骤如下:

  1. 在视图控制器类中添加私有属性,跟踪UITextView之前的空状态:
private var wasTextViewEmpty = true
  1. 在初始化方法(比如viewDidLoad)中,根据UITextView的初始内容初始化状态变量:
override func viewDidLoad() {
    super.viewDidLoad()
    wasTextViewEmpty = yourTextView.text?.isEmpty ?? true
}
  1. 修改textViewDidChange代理方法,仅当状态发生切换时触发动画:
func textViewDidChange(_ textView: UITextView) {
    let currentIsEmpty = textView.text?.isEmpty ?? true
    
    // 仅在空/非空状态切换时执行动画
    if currentIsEmpty != wasTextViewEmpty {
        if currentIsEmpty {
            // 调用文本变为空时的动画
            playEmptyStateAnimation()
        } else {
            // 调用文本变为非空时的动画
            playNonEmptyStateAnimation()
        }
        // 更新状态记录,避免重复触发
        wasTextViewEmpty = currentIsEmpty
    }
}

核心逻辑是:通过对比当前文本的空状态和上一次记录的状态,只有当两者不一致(即状态发生切换)时,才执行对应动画并更新状态变量。这样就能保证每次状态切换只触发一次动画,不会在用户连续输入或删除文本时重复执行。

内容的提问来源于stack exchange,提问作者David Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:31:01