1

コントロールに貼り付けられる文字列をキャプチャし、貼り付ける前に文字列にカスタム書式を適用したいと思います。

これはどのように可能ですか?

ありがとう!

4

1 に答える 1

6

ビュー/コントロールでオーバーライドpaste:します (貼り付け:UIResponderStandardEditActions非公式プロトコルの一部です)。最も簡単には、次のようにします。

- (void)paste:(id)sender
{
   UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
   NSString* rawString = pasteboard.string;
   NSString* formattedString =  // do something fun with rawString here
   pasteboard.string = formattedString;
   [super paste:sender];
}

これは、文字列に対して非常に手の込んだこと (アニメ化されたスマイリー文字の挿入など) を行う必要がないことを前提としていsuperますUITextViewselectedRange挿入を適切に行うためのプロパティ)。

編集: からデータを取得するには、または他のいくつかのデータアクセス方法のNSPasteBoardいずれかを使用する必要があります。文字列/データを検証して、貼り付け可能なものであることを確認する必要がある場合があります。–stringForType:

おそらく呼び出すのではなくsuper、使用する必要があります

[self insertText:formattedString];

NSTextView でこれを行っている場合。別のクラスで作業している場合は、そのコンテキストで適切なものを見つける必要があります。

于 2010-02-23T17:37:08.443 に答える