iOS:将不可编辑的字符串附加到UITextView的末尾

时间:2012-04-21 23:21:23

标签: ios uitextfield uitextview

我想在iOS中重现类似于Facebook“更新状态”视图的屏幕。

enter image description here enter image description here

(此文字应该是可编辑的)步行(此处的任何内容都不应该是可编辑的) - 在南纳拉宾海滩

用户应该能够输入/编辑附加字符串左侧的文本。附加的字符串需要在其父字符串中包装并且可以单击。

有谁知道这是怎么做的? (我最近也在Viddy应用程序中看过它。)

它是否是一个不断增长的UITextField,UIAttributedString分为2行,在输入文本时更新其帧?

1 个答案:

答案 0 :(得分:3)

<强>更新 看起来你想要的是让用户将光标放在签名中,但不要让她输入 在这种情况下,您可能希望使用此代替

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
   NSInteger signatureLength=20;
   if(range.location>self.textView.text.length-signatureLength){
       return false;
   }
   else{
       return true;
   }
}

<强>原始

您需要使用UITextViewDelegate

实现 - (void)textViewDidChangeSelection:(UITextView *)textView方法,类似于:

对于这个例子,让我们假设签名长度是20,这看起来像这样:

-(void)textViewDidChangeSelection:(UITextView *)textView{
       NSInteger signatureLength=20;
       NSRange newSelection=self.textView.selectedRange;
       if(newSelection.location>self.textView.text.length-signatureLength){
           [self.textView setSelectedRange:NSMakeRange(self.textView.text.length-signatureLength, 0)];
       }
 }

所以基本上你每次选择时都会截取(==这种情况下的光标)会发生变化,如果光标位于签名的中间,你就会在之前重新定位。 设置长度为0的选择只会改变光标位置。