最近项目里有个发文字的功能,使用UITextView, 秘书们喜欢从qq上粘贴文字到这里。但是实际发出来时,iOS上有的换行,在Android机器上没有实现换行功能。
测试了下,微博也存在这个问题。
印象笔记的体验是,在iOS上粘贴了内容到印象笔记时,去掉粘贴板上的换行,让用户自己来再次换行。
这样防止了iOS用户不知不觉发出去,而Android用户看不到换行效果。我们也采用了这个方案,实现方法如下:
很少用粘贴板,发现 粘贴板.string 是可读可写的。
建议大家将\n 不要替换为空字符串,最好替换成多几个空格,方便用户知道应该在哪儿换行。
还有些空格和换行,实际不是\n,还有可能是\t等造成的,所以我们在这里都替换掉
- (void)applicationWillEnterForeground:(UIApplication *)application { [StringTools replacePasteboardText]; }
- (void)replacePasteboardText{ //去掉粘贴文字中的换行(适配安卓) UIPasteboard *board = [UIPasteboard generalPasteboard]; NSString *originStr = board.string; if ([Tools isBlankString:originStr]) {//不做这个判断app可能崩溃 return; } NSMutableString *resultStr00 = [NSMutableString stringWithString:originStr]; if ([originStr containsString:@" "]) { resultStr00 = (NSMutableString *)[originStr stringByReplacingOccurrencesOfString: @" " withString: @""]; } if ([resultStr00 containsString:@"\n"]) { NSLog(@"包含n换行"); resultStr00 = (NSMutableString *)[resultStr00 stringByReplacingOccurrencesOfString: @"\n" withString: @""]; } if ([resultStr00 containsString:@"\r"]) { NSLog(@"包含r回车"); resultStr00 = (NSMutableString *)[resultStr00 stringByReplacingOccurrencesOfString: @"\r" withString: @""]; } if ([resultStr00 containsString:@"\t"]) { NSLog(@"包含t水平制表符"); resultStr00 = (NSMutableString *)[resultStr00 stringByReplacingOccurrencesOfString: @"\t" withString: @""]; } if ([resultStr00 containsString:@"\v"]) { NSLog(@"包含v垂直制表符"); resultStr00 = (NSMutableString *)[resultStr00 stringByReplacingOccurrencesOfString: @"\v" withString: @""]; } board.string = resultStr00; NSLog(@"origin : %@ \n result : %@",originStr,board.string); }