0

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

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

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

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

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

当显示选择器视图时,将光标位置放在成员变量中。

- (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];
}

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

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

4

1 回答 1

1

可能为文本字段设置文本会将光标位置重置到末尾,因此您唯一的机会就是自己计算新的光标位置

  • 启动选择器视图时,请记住myCursorPosition中的原始光标位置(就像现在一样)。
  • 每次附加文本时,将文本长度添加到myCursorPosition,并使用该值插入下一个文本。
于 2012-04-30T09:02:01.873 回答