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

UITextView子类A的textViewDidChange在SecondVC中未触发求助

问题原因及排查方案

核心原因

你在SecondVC的textViewShouldChangeTextIn方法中返回false,这会直接阻止UITextView的文本内容发生实际变更。而textViewDidChange是只有当文本真正被修改后才会触发的代理方法,所以自然不会被调用。像textViewDidEndEditing这类属于生命周期事件的代理方法,和文本变更无关,因此不受影响。

排查与修复方向

  • 先确认textViewShouldChangeTextIn返回false的场景是否合理:如果是做输入限制(比如字数、字符类型),不要无条件返回false,应该仅在不符合输入规则的场景返回false,符合规则时返回true。比如限制最多输入10个字符,就判断当前文本长度加上输入字符长度是否超过阈值,超过才返回false。
  • 检查自定义子类A的代理转发逻辑:确保textViewDidChange的转发逻辑没有被遗漏或添加了不必要的拦截条件。比如子类A中是否存在“仅当文本实际变更时才转发”的判断,而因为文本没变化所以没触发转发?
  • 验证SecondVC中文本是否真的未变更:手动尝试修改文本后,打印UITextView的text属性,确认内容确实没有改变,这能进一步佐证是textViewShouldChangeTextIn返回false导致的文本未变更。
  • 如果业务需要在textViewShouldChangeTextIn返回false时也触发类似textViewDidChange的逻辑,可以在返回false的分支里手动调用CustomTextViewDelegate对应的方法,比如customDelegate?.textViewDidChange(self)。

内容的提问来源于stack exchange,提问作者Reyhan muhammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:40:45