根据要求需要制作一个报表,我一UItableView为主体,自定义cell,在cell中添加文本框以便输入相应字段,
要求:1,当我们改变表格对应行的内容时会自动计算相应列的总和【相信大家用过Excel 原理差不多了】
我再文本框失去焦点时,调用代理方法通知UItableView的页面进行计算并刷新数据源和表格
bug:导致文本框不能正常的获取焦点,但我们页面上已经有获取焦点的文本框时,又去点击另外的文本框,此时新的文本框不能获取焦点,但会弹出键盘,且键盘无法收起,通过监听文本框的代理发项,文本框执行到了即将获取焦点的方法【
textFieldShouldBeginEditing
】后便不再往下面执行
原因:当我们上一个文本框失去焦点后出发代理方法会刷新数据源和表格,但是又点击了新的文本框,新的文本框获取焦点的时候,表格刷新,新文本框所在的cell死了,此时出现在用户视野中的是另一个相同的文本框,他没有获取焦点,这样就造成了上述的情形,同时弹出的键盘与文本框没有关联 也无法收起【纯属个人理解.......】
我想的解决方法:使用异步执行代理,处理数据并刷新UI[在主线程中刷新UI]
bug:不会出现上述的bug,但是这样当点击新的文本框的时候,新的文本框不会立即获取焦点,而是就的文本框失去焦点,再点一次才会获取焦点,这样依然点击了两次才回去焦点,想对而言不会出现键盘时刻的情况,但是体验依然不好
解决:不用异步,不刷新整个表格,只刷新需要的cell即可,在这个功能中只需要刷新合计项的数据就好了
时间: 2024-09-29 00:22:17