0

我有普通的 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”并找到某行的位置。知道我该怎么做吗?

4

2 回答 2

0

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

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

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

于 2013-09-22T12:46:46.493 回答
0

我在应用程序中数“\n”以了解何时隐藏键盘。而不是计算 \ns 您可以计算其他字符来获取您的“\n”位置。Rows 只计算“\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;
}
于 2013-09-22T14:11:58.943 回答