2014-04-16 7 views
2

커스텀 코어 데이터 객체를 드래그하는 커스텀 NSView가 있습니다. 나는 일반 대지를 잡고이 같은 제목 설정 위의 메소드를 호출하기 전에일반 페이스트 보드에 쓸 수 없습니다.

[self dragImage:graphicItem.dragImage at:point offset:CGSizeZero event:theEvent pasteboard:pb source:self slideBack:YES]; 

: :이 메소드를 호출하여 드래그 프로세스를 시작

pb = [NSPasteboard generalPastebaord]; 
[pb setString:graphicItem.itemDescription forType:(NSString *)kUTTypeText]; 

하지만 바로이 나는 경우 문자열을 설정 한 후 전화 :

[pb stringForType:(NSString *)kUTTypeText] 

아무 것도 없습니다.

나는이 같은 두꺼운 종이를 만드는 경우 :

pb = [NSPasteboard pasteboardWithName:"myPasteBoard"] 

이 작업을 수행합니다. 그래서, 나는 내가 그것을 데이터를 쓸 수 없습니다, 너무 다른 표준 판지

pb = [NSPasteboard pasteboardWithName: NSDragPboard]; 

하지만이 일을 점점 시도했다.

나는이 메서드를 mouseDragged : (NSEvent *) 이벤트에서 호출하고 있습니다. 내 응용 프로그램이 샌드 박싱되어 있습니다. 아이디어가 있으십니까?

답변

2

에 기록하기 전에 누락, 당신은 새로운 항목을 준비하는 내용의 취소해야합니다. docs에서
:

새로운 내용을 위해 그것을 준비, 대지의 기존 내용을 삭제합니다. 이것은 페이스트 보드에 데이터를 제공하는 첫 번째 단계입니다.

애플은 일반 텍스트 문자열 대지의 내용에 대한 문자열 상수를 제공 NSPasteboardTypeString

다음 코드는 작동하고, 일반 대지의 사용

NSPasteboard* pasteboard = [NSPasteboard generalPasteboard]; 
[pasteboard clearContents]; 
[pasteboard setString:@"TestString" forType:NSPasteboardTypeString]; 
NSLog(@"%@", [pasteboard stringForType:NSPasteboardTypeString]); 
0

일반 대지를 사용하는 경우, 대지

[pb declareTypes:@[(NSString *)kUTTypeText] owner:self]