I have a NSTextView, where the user can paste plain text into.
When the users has "foo" in the pasteboard I would like "bar" to be pasted. In other words, a user goes to, say, a web browser, selects "foo", cmd+c, switches to my NSTextView, cmd+v and "bar" appears at insertion point.
Please, does anyone know how to approach this?
Edit: is it possible to somehow use readSelectionFromPasteboard:type: for this? I just don't know what to put in the method body of my overridden textview..?
Try this. Subclass your text view, and override paste: this way:
@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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With