问题 – 插入文本仅适用于第一次,第二次追加到文本的末尾

URL我使用uipickerview在uitextview中添加文本。

目前我正在添加文本如下(做select行方法)

self.myTextView.text = [NSString stringWithFormat:@"%@ %@", self.myTextView.text, [myTierThreeData objectAtIndex:row]]; 

这工作正常,但我想在光标所在的地方插入文本,所以我做了下面的

 -(void) pickerViewShown:(id)sender{ myCursorPosition = [self.myTextView selectedRange]; } 

当显示pickerview时,将光标位置放在成员variables中。

 - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { NSString *contentsToAdd = [myData objectAtIndex:row]; NSMutableString *tfContent = [[NSMutableString alloc] initWithString:[self.myTextView text]]; // add content where the cursor was NSString *contentsToAddPadded = [NSString stringWithFormat:@"%@ ", contentsToAdd]; [tfContent insertString:contentsToAddPadded atIndex:myCursorPosition.location]; [self.myTextView setText:tfContent]; [tfContent release]; myCursorPosition = [self.myTextView selectedRange]; } 

上面的代码第一次工作,但是当尝试添加下一个文本时,它会在最后附加文本。

请让我知道上面的代码有什么问题

设置文本字段的文本可能会重置光标位置到最后 ,所以您唯一的机会就是自己计算新的光标位置

  • 启动选取器视图时,请记住myCursorPosition中的原始光标位置(就像现在这样做)。
  • 每次追加文本时,将文本长度添加到myCursorPosition ,然后使用该值插入下一个文本。