UITextFieldのカーソル位置に文字列を挿入

リファレンスにあたってもUITextFieldのカーソル位置への文字列挿入を見つけられなかったので、クリップボードに文字列突っ込んで、ペーストしてみた。

- (void)insertText:(NSString *)str {
  UIPasteboard* board = [UIPasteboard generalPasteboard];

  // 現在のクリップボードの文字列を保持する
  NSString *orgStr = board.string;

  // クリップボードに挿入したい文字列をコピーする
  [board setString:str];

  // UITextField上でペーストする
  [textField paste:textField];

  // クリップボードの文字列を復元する
  [board setString:orgStr];
}

文字列以外のクリップボードの情報が損なわれないかは検証してませんので、その点はご了承ください。