将\ n添加到NSString或在UITextView中搜索行位置

时间:2013-09-22 11:59:21

标签: ios objective-c nsstring uitextview

我有简单的NSString,我放入UITextView。我需要在新线开始时搜索位置。我认为如果textview转换字符串可以做到 自动@"This is a big test string which i want to put into UITextView"@"This is a\n big test \nstring which\n i want to\n put into\n UITextView"。然后我可以搜索“\ n”并找到某条线的位置。知道我该怎么办?

2 个答案:

答案 0 :(得分:0)

这不是UITextView的工作方式。在容器中布置文本的过程比仅查找换行符更复杂,并且不会生成包含NL字符的新字符串。

在iOS 7上,您可以使用layoutManager的TextKit属性(textContainerUITextView,...)来访问基础布局组件并查询它们的部分位置字符串。

如果您必须支持较旧的iOS版本,则characterRangeByExtendingPosition:inDirection:协议中会UITextInput。您可以使用它来计算文本行的范围。

答案 1 :(得分:0)

我在应用中计算“\ n”以了解何时隐藏键盘。而不是计数\ ns你可以计算其他字符来获得你的“\ n”位置。行只计算“\ n”的数量,并在视图加载时重置为零。

// dismiss keyboard from text view with return key
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range  replacementText:(NSString *)text
{
    if([text isEqualToString:@"\n"]) {

        rows++;

        if ( rows >= 2 ){

            // resign text view
            [self.quotationTextView resignFirstResponder];

            return NO;
        }else{
            return YES;
        }
    }else{
        rows = 0;
    }


    return YES;
}