4

ユーザーがプレーンテキストを貼り付けることができる NSTextView があります。

ユーザーがペーストボードに「foo」を持っている場合、「bar」を貼り付けたいと思います。つまり、ユーザーが Web ブラウザーに移動し、"foo" を選択して cmd+c を選択し、NSTextView に切り替えて cmd+v を押すと、挿入ポイントに "bar" が表示されます。

お願いします、これにアプローチする方法を知っている人はいますか?

編集:どういうわけreadSelectionFromPasteboard:type:かこれに使用できますか?オーバーライドされたテキストビューのメソッド本体に何を入れればよいのかわかりません..?

4

1 に答える 1

9

これを試して。テキスト ビューをサブクラス化し、この方法で貼り付けをオーバーライドします。

@implementation RDTextView

-(void)paste:(id)sender {
    NSPasteboard *pb = [NSPasteboard generalPasteboard];
    NSString *pbItem = [pb readObjectsForClasses: @[[NSString class],[NSAttributedString class]] options:nil].lastObject;
    if ([pbItem isKindOfClass:[NSAttributedString class]]) 
        pbItem = [(NSAttributedString *)pbItem string];

    if ([pbItem isEqualToString:@"foo"]) {
        [self insertText:@"bar"];
    }else{
        [super paste:sender];
    }
}

@end
于 2012-08-13T20:21:06.247 に答える