2010-08-03 56 views
1

我在可可中有一個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 

我怎樣才能改變這種做呢?

回答

1

你從來沒有真正發送自己的writeToPasteboard:消息,所以你需要這樣做。您需要向文本字段詢問其字符串值,並將其作爲參數傳遞給writeToPasteboard:消息。

更好的是,只需將按鈕連接到第一響應者的copy:操作即可。文本字段對此消息作出響應,因此只要它是第一響應者(或者響應者鏈中至少足夠高),動作消息就會觸發該字段,並且字段將自行復制文本。有關更多信息,請參閱Cocoa Event-Handling Guide

這就是主菜單中的複製菜單項已經工作的方式,這就是您不需要編寫任何代碼來實現菜單項或按鈕的方法。

相關問題