如何将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

这就是主菜单中的复制菜单项已经工作的方式,这就是您不需要编写任何代码来实现菜单项或按钮的方法。