UITextView控件换行符

时间:2014-02-09 18:48:57

标签: ios objective-c uitextview

我有一个UITextView,其中的项目如下所示:

artist1 - song name1, artist2 - song name 2,
artist3 - song name3, etc.

我只想禁止除艺术家之间的换行符(逗号之后,下一位艺术家之前),所以这将无效:

artist 1 - song name1, artist 2 - // <- invalid break
song name 2.

我已经尝试了两种方法来实现这一点:首先,我将内容放在webview中,这使得解决这个问题变得微不足道。不幸的是,由于其他几个原因,这是不可能的。

其次,我添加_,其中有空格并隐藏它们,如下所示:

artist_1_-_song_name1, artist_2_-_song_name_2, etc // <- setting colour of _ to invisible.

这几乎奏效了,但现在它在连字符上打破了,就像这样:

artist_1_-
song_name1

我首先想找到解决这个问题的好方法。如果这不起作用,我会选择看起来像破折号但不会破坏的Unicode字符(U + 2015横条太长)

编辑:刚刚发现了关于Unicode字符“非爆炸性”的问题(U + 2011),所以虽然问题在技术上已经解决了,但我仍然在寻找一种不那么强硬的方法来做到这一点。

2 个答案:

答案 0 :(得分:3)

你想要的是一个非中断空格,或Unicode字符u + 00a0。

NSString *nonbreakingspace = @"\u00A0";
NSString *nonbreakinghyphen = @"\u2011";

将artist1 - song name1中的空格替换为nonbreakingspace字符串,将连字符替换为非断开连字符nonbreakinghyphen字符串。

NSString *text = ...;
text = [text stringByReplacingOccurrencesOfString:@" " withString:nonbreakingspace];
text = [text stringByReplacingOccurrencesOfString:@"-" withString:nonbreakinghyphen];
myTextView.text = text;

答案 1 :(得分:0)

swift 4版本!

var nonbreakinghyphen = "\u{2011}"
var text = "i-21"
myTextView.text = text.replacingOccurrences(of: "-", with: nonbreakinghyphen)}