我想在iOS中重现类似于Facebook“更新状态”视图的屏幕。
(此文字应该是可编辑的)步行(此处的任何内容都不应该是可编辑的) - 在南纳拉宾海滩
用户应该能够输入/编辑附加字符串左侧的文本。附加的字符串需要在其父字符串中包装并且可以单击。
有谁知道这是怎么做的? (我最近也在Viddy应用程序中看过它。)
它是否是一个不断增长的UITextField,UIAttributedString分为2行,在输入文本时更新其帧?
答案 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的选择只会改变光标位置。