UITextView在textview文本中插入文本

Joh*_*ith 15 iphone cocoa-touch uitextview

我想偶尔在UITextView文本对象中插入文本.例如,如果用户按下"New Paragraph"按钮,我想插入一个双换行符,而不仅仅是标准的单个换行符.

我该怎么办呢?我是否必须从UITextView读取字符串,改变它并将其写回?那我怎么知道指针在哪里?

谢谢

Mar*_*don 32

由于text属性UITextView是不可变的,因此您必须创建一个新字符串并将text属性设置为它.NSString有一个实例方法(-stringByAppendingString:),用于通过将参数附加到接收器来创建新字符串:

textView.text = [textView.text stringByAppendingString:@"\n\n"];
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望在更新textView.text之前设置textView.scrollEnabled = NO; 这可以防止令人讨厌的滚动到文本视图的末尾 (8认同)
  • 找到了!它实际上是insertString:atIndex: (4认同)

sud*_*udo 26

UITextview有一个insertText方法,它尊重游标位置.

- (void)insertText:(NSString *)text
Run Code Online (Sandbox Code Playgroud)

例如:

[myTextView insertText:@"\n\n"];
Run Code Online (Sandbox Code Playgroud)

  • 这怎么不是公认的答案?这是在不诉诸黑客的情况下做到这一点的正确方法. (4认同)

Bri*_*cur 9

这是我如何实现它,它似乎很好地工作.

- (void) insertString: (NSString *) insertingString intoTextView: (UITextView *) textView  
{  
    NSRange range = textView.selectedRange;  
    NSString * firstHalfString = [textView.text substringToIndex:range.location];  
    NSString * secondHalfString = [textView.text substringFromIndex: range.location];  
    textView.scrollEnabled = NO;  // turn off scrolling or you'll get dizzy ... I promise  

    textView.text = [NSString stringWithFormat: @"%@%@%@",  
      firstHalfString,  
      insertingString,  
      secondHalfString];  
    range.location += [insertingString length];  
    textView.selectedRange = range;  
    textView.scrollEnabled = YES;  // turn scrolling back on.  

}
Run Code Online (Sandbox Code Playgroud)


Par*_*oja 5

对于Swift 3.0

你可以通过调用方法追加文本insertTextUITextView实例。

例:

textView.insertText("yourText")
Run Code Online (Sandbox Code Playgroud)