如何将textfield单元格(在可可中)中的文本复制到NSPasteboard?

时间:2010-08-03 10:11:57

标签: objective-c cocoa 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
剪贴板中的

 #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

我怎样才能改变这种做法?

1 个答案:

答案 0 :(得分:1)

您实际上从未向自己发送writeToPasteboard:消息,因此您需要这样做。您需要向文本字段询问其字符串值,并将其作为参数传递给writeToPasteboard:消息。

更好的是,只需将按钮连接到第一响应者的copy:操作即可。文本字段响应此消息,因此只要它是第一个响应者(或者响应者链至少足够高),操作消息将到达该字段并且该字段将自己复制文本。有关详细信息,请参阅Cocoa Event-Handling Guide

这就是主菜单中的“复制”菜单项已经运行的方式,而且您不需要编写任何代码来实现菜单项或按钮。