TITokenField 在 iOS7 下出现的问题: 切换到textView后导致tokens成倍增加
2013-12-06 15:52
567 查看
问题描述在 https://github.com/thermogl/TITokenField/commit/3541c875f127c6e07da7204728b3486b906602d0所述: 1、在 iOS7 下运行示例程序。
2、在textField中输入某些 names 中没有的值,例如"zz"。
3、点击 textView。
4、再次回到 textField。
5、重复3-4。
6、textField 中的 tokens 自动复制为多个。
zxcat 猜测:
在 iOS7 中,UITextView 和 UITextField 发生了变化。在某些项目中,他也发现 iOS7 中它们调用委托方法的次数会比iOS6 更多。例如 UITextView 会多出两个委托方法调用
-textViewDidChange: 和 -textViewDidChangeSelection 。这个问题很可能与此有关。
zxcat 经过调试之后,发现问题出自这里:
0x0009f23a in -[TITokenField addToken:] atPods/TITokenField/TITokenField.m:608 0x0009f0bd in -[TITokenFieldaddTokenWithTitle:representedObject:] at Pods/TITokenField/TITokenField.m:5920x0009ef55 in -[TITokenField addTokenWithTitle:] at Pods/TITokenField/TITokenField.m:5850x0009feac in __28-[TITokenField tokenizeText]_block_invoke atPods/TITokenField/TITokenField.m:685 0x032b405d in __53-[__NSArrayIenumerateObjectsWithOptions:usingBlock:]_block_invoke () 0x032b3f92 in-[__NSArrayI enumerateObjectsWithOptions:usingBlock:] () 0x032310a5 in-[NSArray enumerateObjectsUsingBlock:] () 0x0009fd07 in -[TITokenFieldtokenizeText] at Pods/TITokenField/TITokenField.m:684 0x0009e52a in-[TITokenField didEndEditing] at Pods/TITokenField/TITokenField.m:531
tokenfield 失去焦点时会调用-[TITokenField didEndEditing] ,并在其中执行 addToken 方法。但是 addToken 方法中有一句 [self becomeFirstResponder],导致方法递归调用。
因此解决的办法就很简单了,找到 addToken 方法,查找 if(shouldAdd){,然后注释掉 [self becomeFirstResponder]; 语句。
2、在textField中输入某些 names 中没有的值,例如"zz"。
3、点击 textView。
4、再次回到 textField。
5、重复3-4。
6、textField 中的 tokens 自动复制为多个。
zxcat 猜测:
在 iOS7 中,UITextView 和 UITextField 发生了变化。在某些项目中,他也发现 iOS7 中它们调用委托方法的次数会比iOS6 更多。例如 UITextView 会多出两个委托方法调用
-textViewDidChange: 和 -textViewDidChangeSelection 。这个问题很可能与此有关。
zxcat 经过调试之后,发现问题出自这里:
0x0009f23a in -[TITokenField addToken:] atPods/TITokenField/TITokenField.m:608 0x0009f0bd in -[TITokenFieldaddTokenWithTitle:representedObject:] at Pods/TITokenField/TITokenField.m:5920x0009ef55 in -[TITokenField addTokenWithTitle:] at Pods/TITokenField/TITokenField.m:5850x0009feac in __28-[TITokenField tokenizeText]_block_invoke atPods/TITokenField/TITokenField.m:685 0x032b405d in __53-[__NSArrayIenumerateObjectsWithOptions:usingBlock:]_block_invoke () 0x032b3f92 in-[__NSArrayI enumerateObjectsWithOptions:usingBlock:] () 0x032310a5 in-[NSArray enumerateObjectsUsingBlock:] () 0x0009fd07 in -[TITokenFieldtokenizeText] at Pods/TITokenField/TITokenField.m:684 0x0009e52a in-[TITokenField didEndEditing] at Pods/TITokenField/TITokenField.m:531
tokenfield 失去焦点时会调用-[TITokenField didEndEditing] ,并在其中执行 addToken 方法。但是 addToken 方法中有一句 [self becomeFirstResponder],导致方法递归调用。
因此解决的办法就很简单了,找到 addToken 方法,查找 if(shouldAdd){,然后注释掉 [self becomeFirstResponder]; 语句。
相关文章推荐
- 使用KeyboardView导致EditText光标不显示的问题
- (ios7) 解决代码布局View, ios7 中 subView 高度增加StatusBar20dp的问题,保证Ios6,ios7代码一致
- ios7 中关于导航切换影响UIScrollView的问题
- 关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
- ios7 中关于导航切换影响UIScrollView的问题
- textView限制字数(超简单,不走弯路)(解决联想输入及iOS7崩溃等问题)
- IOS7 Text View 截断的问题解决
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- 横竖屏切换导致适配出现问题(独家)
- 关于TextView 宽度过大导致Drawable无法居中问题
- iOS7 中关于导航切换影响UIScrollView的问题
- 把ViewPager 切换时出现卡顿的问题
- ios7 手势滑动切换ViewController 问题总结
- EditText 输入法问题(setContentView切换两个view,抢焦点问题)
- iOS7适配问题 UITableView上方出现空白
- tableview 自定义cell 点击cell改变cell中的label.text的字体颜色,cell复用出现问题
- XML中使用提示键出现Element <TextView> is unknown或其他问题
- Viewpager + fragment,其中一些fragment不被保存在内存,切换导致初始化问题
- iOS7适配问题 UITableView上方出现空白
- ios7 中关于导航切换影响UIScrollView的问题