问题描述
有用户反馈,在iPhone 12的手机上,我们有一个表单无法输入内容,表单是在tableViewCell内嵌套UITextView和UITextField实现的。
定位问题
找了一个iPhone 12的测试机,在经过调试后,控制台没发现异常log,操作中也没有响应。最后查看了视图的层级,发现在TableViewCell的顶层覆盖了一个ContentView,视图层级如下:
这个ContentView将交互事件拦截了,导致底层的TextView没有响应;
解决问题
找到了问题,就猜测是不是直接把SubVew添加到了self上,而不是self.contentVew,查看代码,果然是这样,只需要进行下面的修改:
// 修改前
[self addSubview:self.titleField];
// 修改后
[self.contentView addSubview:self.titleField];
后记
在之前,直接将TableViewCell的subView直接添加到self上是没有问题的,估计是iOS 14 之后,层级有所调整,必须将subView添加到self.contentView上。
网友评论