填坑记录
2016-07-12 00:00
204 查看
摘要: iOS
1. 问题:iOS7以后,tableView使用多个section并使用默认高度时,则section的展示只从 section = 1 开始。
方案:实现heightForHeaderInSection代理方法,return一个高度。
2. 限制字符输入问题
一般要实现限制字符输入要实现textView的两个代理方法:
这样实现的效果是:当用户输入到最大字符限制时,不能继续输入。
但问题在于:
当用户使用复制粘贴输入时,一旦超过字符限制,就会崩溃。
有人想到用 textView.text 和粘贴板上的字符 [UIPasterboard geneeralPasteboard].string 进行匹配的方法来区别用户是键盘输入还是粘贴输入——问题变成用户分几次粘贴时,就没办法对 textView.text 进行完整匹配。
解决方案:在上述两个代理方法中只实现第二个textViewDidChange:方法
3. 问题:label高度自适应
方案:
4. label字号、颜色不同
5.调用category的方法报错:selector not recognized
解决方法:Build Settings --> Linking-> Other Linker Flags 中加上 -ObjC 或者-all_load
************记得引用category文件啊!!!!************
原因:
之所以使用该标志,和Objective-C的一个重要特性:类别(category)有关。Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它 只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别 中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进 来。
本来这样就可以解决问题了,不过在64 位的Mac系统或者iOS系统下,链接器有一个bug,会导致只包含有类别的静态库无法使用-ObjC标志来加载文件。变通方法是使用-all_load 或者-force_load标志,它们的作用都是加载静态库中所有文件,不过all_load作用于所有的库,而-force_load后面必须要指定具 体的文件。
1. 问题:iOS7以后,tableView使用多个section并使用默认高度时,则section的展示只从 section = 1 开始。
方案:实现heightForHeaderInSection代理方法,return一个高度。
2. 限制字符输入问题
一般要实现限制字符输入要实现textView的两个代理方法:
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ NSString *str = [NSString stringWithFormat:@"%@%@", textView.text, text]; if (str.length > MaxNumberOfDescriptionChars) { textView.text = [textView.text substringToIndex:MaxNumberOfDescriptionChars]; return NO; } return YES; } //常常由于联想输入的缘故,会有很多字符一起输入 -(void)textViewDidChange:(UITextView *)textView{ //该判断用于联想输入 if (textView.text.length > MaxNumberOfDescriptionChars) { textView.text = [textView.text substringToIndex:MaxNumberOfDescriptionChars]; } } |
但问题在于:
当用户使用复制粘贴输入时,一旦超过字符限制,就会崩溃。
有人想到用 textView.text 和粘贴板上的字符 [UIPasterboard geneeralPasteboard].string 进行匹配的方法来区别用户是键盘输入还是粘贴输入——问题变成用户分几次粘贴时,就没办法对 textView.text 进行完整匹配。
解决方案:在上述两个代理方法中只实现第二个textViewDidChange:方法
3. 问题:label高度自适应
方案:
- (CGFloat)boundingRectWithStr:(NSString *)str withFont:(UIFont *)font { NSDictionary *attribute = @{NSFontAttributeName: font}; CGSize retSize = [str boundingRectWithSize:CGSizeMake(MAXFLOAT, Height) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | & 7fe0 nbsp; NSStringDrawingUsesFontLeading attributes:attribute context:nil].size; return retSize.height; } |
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"本团口令:%@(长按复制)", _token]]; [str addAttribute:NSForegroundColorAttributeName value:BBColor666666 range:NSMakeRange(0, 5)]; [str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, 5)]; NSInteger length = [_token length]; [str addAttribute:NSForegroundColorAttributeName value:BBColor666666 range:NSMakeRange(5 + length, 6)]; [str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(5 + length, 6)]; _tokenLabel.attributedText = str; |
解决方法:Build Settings --> Linking-> Other Linker Flags 中加上 -ObjC 或者-all_load
************记得引用category文件啊!!!!************
原因:
之所以使用该标志,和Objective-C的一个重要特性:类别(category)有关。Unix的标准静态库实现和Objective-C的动态特性之间有一些冲突:Objective-C没有为每个函数(或者方法)定义链接符号,它 只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别 中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进 来。
本来这样就可以解决问题了,不过在64 位的Mac系统或者iOS系统下,链接器有一个bug,会导致只包含有类别的静态库无法使用-ObjC标志来加载文件。变通方法是使用-all_load 或者-force_load标志,它们的作用都是加载静态库中所有文件,不过all_load作用于所有的库,而-force_load后面必须要指定具 体的文件。
相关文章推荐
- 程序员修养2——架构基础
- swiper教程——swiper的基础使用(十九)
- Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照
- java并发特性,原子性、有序性、可见性
- hibernate防止sql注入
- java23种设计模式
- FindBugs java静态代码分析
- Key锁
- FindBugs java静态代码分析
- lunix问题笔记
- sturts2 标签
- ORACLE CLOSE BY CLIENT STACK TRACE
- PoI导出数据
- AES加密在linux下不能正常使用
- JVM学习笔记
- log4j输出多个自定义日志文件
- jvm常用命令以及问题总结
- JDK并发编程2
- 使用pax.exam对osgi(基于maven)进行集成测试
- FindBugs java静态代码分析