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

iOS15.0.2下编辑UITextField抛出NSInvalidArgumentException是什么原因?

问题原因

这是iOS 15.0~iOS 15.1版本的官方系统Bug,出现在系统默认键盘的文本预处理逻辑中:系统内部处理输入文本时,错误将NSArray类型的变量当作NSString调用stringByTrimmingCharactersInSet:方法,触发无法识别选择器的崩溃。
该问题与业务代码、textField配置无关,以下特征均可佐证:

  • 崩溃覆盖所有textField组件,包括未做任何自定义的FirebaseUI内置textField
  • 崩溃堆栈中存在大量UIKit键盘相关的系统调用,未关联到业务代码逻辑
  • 升级iOS 15.2后问题自动消失,匹配苹果在该版本更新中修复的文本输入类系统Bug的官方记录
兼容方案(如需支持iOS 15.0~15.1版本)

如果App需要兼容上述存在问题的系统版本,可以采用以下临时方案规避崩溃:

  1. 添加NSArray分类,实现空的stringByTrimmingCharactersInSet:方法兜底,避免异常抛出,示例代码如下:
// 可直接在项目中添加该分类,无需额外调用
@implementation NSArray (CrashFix)
- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set {
    // 兜底逻辑,可根据需要返回空字符串或者其他默认值
    return @"";
}
@end

如果使用Swift开发,可以通过Runtime方式添加方法实现,或者使用全局异常捕获处理该类异常。
2. 针对iOS 15.0~15.1版本,可临时关闭textField的自动纠错、自动首字母大写等系统文本预处理功能,绕过触发Bug的逻辑:

textField.autocorrectionType = .no
textField.autocapitalizationType = .none
  1. 优先引导用户升级到iOS 15.2及以上版本,从根源上解决该问题。
其他无关问题说明
  • 日志中的Writing analzed variants.是Xcode调试时的系统日志,确实不影响业务逻辑,可以忽略
  • 启动时的网络相关日志是iOS 15早期版本的网络框架调试日志,和本次文本输入崩溃无关联

内容的提问来源于stack exchange,提问作者Dan Abnormal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:24:01