iOS 去掉粘贴文字中的换行(适配安卓)


最近项目里有个发文字的功能,使用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);
}








猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/53536888