2012-04-21 44 views
2

我想重现一个类似于iOS中的Facebook“更新状态”视图的屏幕。iOS:将不可编辑的字符串添加到UITextView的末尾

enter image description here enter image description here

(这段文字应该是可编辑)走(任何过去这里不应该是编辑) - 南纳拉宾海滩

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

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

难道它是一个不断增长的UITextField,UIAttributedString分裂成两行,在输入文本时更新其框架?

回答

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

林plement的 - (空)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长度设置选区只会改变光标位置。

+0

只是一个精度,假设您是用签名字符串初始化textview,并且在这种情况下签名长度是20个字符。 – 2012-04-22 01:18:58

+0

使用此方法,您将如何格式化并使签名字符串可点击? – 2012-04-22 05:43:31

+0

你是什么意思?你想让光标在其内闪烁可点击吗?但只是不可编辑?然后你应该使用 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text改为,让我用该信息编辑我的答案 – 2012-04-22 06:39:56

相关问题