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 に答える