1

cocoa にテキストフィールドセルとプッシュボタンがあります。ボタンをクリックしてテキストフィールドのテキストをコピーしたい。

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

これを変更するにはどうすればよいですか?

4

1 に答える 1

1

実際に自分自身にwriteToPasteboard:メッセージを送信することはないため、送信する必要があります。テキスト フィールドにその文字列値を要求し、それを引数としてwriteToPasteboard:メッセージに渡します。

さらに良いことに、ボタンをファーストレスポンダーのcopy:アクションに接続するだけです。テキスト フィールドはこのメッセージに応答するため、それが最初のレスポンダー (または少なくともレスポンダー チェーンの十分に高い位置) である限り、アクション メッセージはフィールドにヒットし、フィールドはテキストを単独でコピーします。詳細については、Cocoa イベント処理ガイドを参照してください。

これが、メイン メニューの [コピー] メニュー項目が既に機能している方法であり、メニュー項目またはボタンを実装するためのコードを記述する必要がない方法です。

于 2010-08-03T12:03:08.720 に答える