2010-08-03 5 views
1

나는 텍스트 필드 셀과 푸시 버튼을 코코아에 가지고있다. 버튼을 클릭하여 텍스트 입력란에 텍스트를 복사하고 싶습니다. clipboard.h에서텍스트 필드 셀의 텍스트 (코코아)를 NSPasteboard에 복사하는 방법은 무엇입니까?

clipboard.m에서

#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

실제로 메시지를 보내지 않으려면 writeToPasteboard: 메시지를 보내야합니다. 텍스트 필드에 문자열 값을 요청하고이를 인수로 writeToPasteboard: 메시지에 전달해야합니다.

버튼을 첫 번째 응답자의 copy: 동작에 연결하는 것보다 좋습니다. 텍스트 필드는이 메시지에 응답하므로 첫 번째 응답자 (또는 적어도 응답기 체인까지 충분히 높다)이면 작업 메시지가 필드에 도달하고 필드가 자체 텍스트를 복사합니다. 자세한 내용은 Cocoa Event-Handling Guide을 참조하십시오.

주 메뉴의 복사 메뉴 항목이 이미 작동하는 방식이므로 메뉴 항목이나 버튼을 구현하는 코드를 작성하지 않아도됩니다.

관련 문제