2012-04-21 61 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

相關問題