나는 응용 프로그램 내에서 끌어서 놓기를 사용하는 Cocoa Mac 응용 프로그램을 가지고 있습니다. 내 응용 프로그램의 이미지를 Finder와 같은 다른 응용 프로그램으로 드래그하지 못하게하고 싶습니다. 이것을 할 수있는 방법이 있습니까?내 코코아 앱에서 드래그를 해제하려면 어떻게합니까?
1
A
답변
1
이미지가 앱 외부로 드래그되는 것을 방지해야하는 진정한 이유가있는 경우 Info.plist에서 내부 전용 드래그의 드래그 유형으로 사용할 수있는 declare your own UTI을 사용해야합니다.
그런 다음 사용자 정의 UTI를 지정하여 판지 유형을 선언하십시오. 예를 들어,보기에 드래그 지원 :
물론//the UTI string should match the one in your Info.plist
static NSString* kYourCustomUTIType = @"com.yourCompany.internalDragType";
- (void)mouseDown:(NSEvent *)theEvent
{
NSSize dragOffset = NSZeroSize;
NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
[pboard declareTypes:[NSArray arrayWithObject:kYourCustomUTIType] owner:self];
[pboard setData:[[self image] TIFFRepresentation] forType:kYourCustomUTIType];
[self dragImage:[self image] at:[self imageLocation] offset:dragOffset
event:theEvent pasteboard:pboard source:self slideBack:YES];
return;
}
, 당신이 당신의 드래그 대상뿐만 아니라 내부 드래그 유형을 이해하고 있는지 확인해야 할 것입니다.
그러나 일반적으로 이미지가 앱 외부로 드래그되지 않아야하는 실제적인 이유가 없다면 기본 동작을 허용해야합니다. Mac 사용자는 끌어서 놓기가 "잘 작동"할 것으로 기대하며,이를 깨뜨림으로서 앱을 돋보이게 만듭니다. 좋은 방법이 아닙니다.
관련 문제
- 1. Python에서 레지스트리 리디렉션을 해제하려면 어떻게합니까?
- 2. Matrix 클래스에서 메모리를 해제하려면 어떻게합니까?
- 3. 상대 위치 지정을 해제하려면 어떻게합니까?
- 4. ViewGroup에서 화면을 강제로 해제하려면 어떻게합니까?
- 5. UITableViewCell의 삭제 모드를 해제하려면 어떻게합니까?
- 6. 내 C 소스 파일에서 경고를 일시적으로 해제하려면 어떻게합니까?
- 7. 코코아 앱에서 카이로 사용하기
- 8. iPhone 앱에서 메모리를 안정적으로 해제하려면 어떻게해야합니까?
- 9. 특정 페이지에서 스크롤 위치 유지를 해제하려면 어떻게합니까?
- 10. C++에서 ASSERT (x)를 해제하려면 어떻게합니까?
- 11. Spring Roo에서 예외 변환을 해제하려면 어떻게합니까?
- 12. eclipse에서 자동 생성 코드를 해제하려면 어떻게합니까?
- 13. XStream에서 불필요한 이스케이프 기능을 해제하려면 어떻게합니까? 기본적으로
- 14. HTTParty Post Body에서 URI 인코딩을 해제하려면 어떻게합니까?
- 15. Rails 3.2.2에서 tinyint 부울 에뮬레이션을 해제하려면 어떻게합니까?
- 16. eclipse에서 프로젝트의 JavaScript 지원을 해제하려면 어떻게합니까?
- 17. MVC 4 - 기본 Error.vbhtml 페이지를 해제하려면 어떻게합니까?
- 18. Visual Studio 2010 스크립트 디버깅을 해제하려면 어떻게합니까?
- 19. Intellij IDEA에서 자동 괄호 생성을 해제하려면 어떻게합니까?
- 20. 특정 컨트롤에 대한 viewstate를 해제하려면 어떻게합니까?
- 21. 디자인 타임에 사용자 지정 IValueConverter를 해제하려면 어떻게합니까?
- 22. Node.js의 HTTP 리디렉션에서 캐싱을 해제하려면 어떻게합니까?
- 23. Visual Studio 2008에서 스냅을 해제하려면 어떻게합니까?
- 24. joomla에서 css + js 최적화를 해제하려면 어떻게합니까?
- 25. 내 사용자를 내 애플리케이션에서 등록 해제하려면 어떻게해야합니까?
- 26. 코코아 앱에서 소수점 문제가 발생했습니다.
- 27. 내 UITableView의 범위를 지나서 스크롤/드래그를 멈추려면 어떻게해야합니까?
- 28. 코코아 앱에서 PDFView를 사용하는 방법은 무엇입니까?
- 29. 내 앱에서
- 30. 내 앱에서
왜 * 기능 *을 사용하지 않으시겠습니까? –
비슷한 상황이 있습니다. 애플리케이션 내에서 NSWindow를 드래그하려고하고 드래그 데이터가 NSString이므로 파싱하고 NSWindow가 드래그 된 것을 알 수 있습니다. 내 응용 프로그램 외부에서 드래그 된 문자열은 내부 정보를 표시하는 것 외의 의미가 없습니다. –