【问题标题】:how can i copy the text in the textfield cell (in cocoa) to NSPasteboard?如何将文本字段单元格(在可可中)中的文本复制到 NSPasteboard?
【发布时间】:2010-08-03 10:11:57
【问题描述】:

我在 cocoa 中有一个文本字段单元格和一个按钮。 我想通过单击按钮复制文本字段中的文本。

在剪贴板.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

在剪贴板.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

我怎样才能改变这个来做到这一点?

【问题讨论】:

    标签: objective-c cocoa textfield nspasteboard


    【解决方案1】:

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

    更好的是,只需将按钮连接到第一响应者的 copy: 操作。文本字段响应此消息,因此只要它是第一个响应者(或至少在响应者链上足够高),操作消息将命中该字段,并且该字段将自行复制文本。请参阅Cocoa Event-Handling Guide 了解更多信息。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 2021-03-11
      • 2011-07-18
      相关资源
      最近更新 更多