如何将textfield单元格(在可可中)的文本复制到NSPasteboard?
问题描述:
我在可可中有一个textfield单元格和一个按钮。 我想通过单击按钮来复制文本字段中的文本。如何将textfield单元格(在可可中)的文本复制到NSPasteboard?
在clipboard.h#import <Cocoa/Cocoa.h>
@interface clipboard:NSObject {
IBOutlet id but1;
IBOutlet id numf2_1;
NSPasteboard *pasteBoard;
}
- (BOOL) writeToPasteBoard:(NSString *)stringToWrite;
- (NSString *) readFromPasteBoard;
- (id) init;
//- (IBAction) insert_cb:(id)sender;
@end
在clipboard.m
#import "clipboard.h"
//@implementation clipboard
@implementation clipboard
//- (IBAction) insert_cb:(id)sender{
- (id) init
{
[super init];
pasteBoard = [NSPasteboard generalPasteboard];
return self;
}
- (BOOL) writeToPasteBoard:(NSString *)stringToWrite
{
[pasteBoard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
return [pasteBoard setString:stringToWrite forType:NSStringPboardType];
}
- (NSString *) readFromPasteBoard
{
return [pasteBoard stringForType:NSStringPboardType];
}
@end
我怎样才能改变这种做呢?
答
你从来没有真正发送自己的writeToPasteboard:
消息,所以你需要这样做。您需要向文本字段询问其字符串值,并将其作为参数传递给writeToPasteboard:
消息。
更好的是,只需将按钮连接到第一响应者的copy:
操作即可。文本字段对此消息作出响应,因此只要它是第一响应者(或者响应者链中至少足够高),动作消息就会触发该字段,并且字段将自行复制文本。有关更多信息,请参阅Cocoa Event-Handling Guide。
这就是主菜单中的复制菜单项已经工作的方式,这就是您不需要编写任何代码来实现菜单项或按钮的方法。