2013-04-01 3 views
2

이러한 메서드를 사용자 지정할 수 있도록 해당 창 대리자의 NSTextField 인스턴스의 복사, 잘라 내기 및 붙여 넣기 메서드에 액세스하려고합니다. tableViews 및 textViews와 달리 텍스트 필드의 복사, 붙여 넣기 및 잘라 내기 작업은 대리자에서 응답하지 않습니다. 내 이해 모든 텍스트 컨트롤을 창에서 필드 편집기를 공유하는 아직 경우가 아닌 것 같습니다.NSTextField : 복사 및 붙여 넣기 메서드 표시

아마도 TextField의 필드 편집기가 창 대리자와 공유되지 않았을 것이라고 생각했지만 필자가 컨트롤을 입력 할 때 필드 편집기가 동일하다는 것을 알았습니다. 매우 이상합니다.

내 현재 해결 방법은 필요에 따라 복사 및 붙여 넣기 작업 메서드가 응답하는 NSTextView의 하위 클래스 인스턴스를 사용하는 것입니다. 그러나 이것은 자체적 인 문제가 있으며 NSTextFields를 예상대로 작동시킬 수있는 방법이 있었으면합니다.

+0

당신이 NSTextField있는 서브 클래스 및 방법의 몇 가지를 인수하는 것이 OK인가를 지적했다? – Jean

+0

고마워 진 진, 나는 이미 아무 쓸데없이 노력했다. 윈도우의 델리게이트를 사용하는 경우와 마찬가지로 액션 메소드에 대한 응답도 없습니다. – Antony

답변

0

아마 당신은 NSTextField있는의를 살펴 수 :

- (BOOL)writeSelectionToPasteboard:(NSPasteboard *)pboard type:(NSString *)type; 
- (BOOL)readSelectionFromPasteboard:(NSPasteboard *)pboard type:(NSString *)type; 

이 당신이 호출이 응답을 사용자 정의 요격 할 수있다.

+2

Jean에게 다시 한 번 감사드립니다. NSTextView에 나열된 것을 볼 수 있지만이 메서드는 NSTextField에 대해 유효하지는 않습니다. 그럼에도 불구하고 copy 메소드를 사용자 정의하는 이유는 coreData 엔티티의 전체 복사본을 수행하는 것이 었음을 제외하고는 어쨌든 테스트했을 것입니다. 필자는 텍스트 편집기가 대지에 문자열 만 제공 할 것이라고 확신합니다. 객체 ID는 아닙니다. – Antony

+0

@Antony 필자는 한번도 사용한 적이 없지만, 두 선택자 모두 NSObject 카테고리'NSObject (NSServicesRequests) '로 정의됩니다. 또한 제안 된 해결책은 [이 스레드] (https://groups.google.com/forum/?fromgroups=#!topic/cocoa-unbound/pWYjtkv7x7M) OP의 작동하는 것으로 보입니다. – Jean

+0

진, 고맙습니다. NSObject 클래스에 제안 된 메서드가 간과 된 것 같습니다. 그럼에도 불구하고 NSTextField 하위 클래스 또는 대리자 내에서 작동하는 메서드를 가져올 수 없습니다. 내 실패는 아마도 서비스 프로토콜을 올바르게 구현하지 않았기 때문일 것입니다. 어떤 경우 든 NSTextField의 복사 및 붙여 넣기 방법을 중재하기 위해 서비스를 제공해야하는 것은 다소 힘든 일입니다. – Antony

2

nstextfield에는 복사 및 붙여 넣기 기능이 없습니다. 그것들은 nstextview에서만 발견됩니다. 잡기는 텍스트 필드를 편집 할 때 편집 중에 fieldeditor라는 텍스트 뷰를 열고 첫 번째 응답자로 설정한다는 것입니다.

를 해결하는 방법 :

제출 한 각각의 텍스트가 너무 그것을 연결 자식으로 셀을 가지고있다.

enter image description here

셀이 기능을 사용하면 사용자 정의를 NSTextView

을 삽입 할 수 있습니다 fieldeditorforview

class cell: NSTextFieldCell { 

    override func fieldEditorForView(aControlView: NSView) -> NSTextView? { 
     return ESPasteView() 
    } 
} 

라는 사용자 정의 필드 편집기를 구현하는 방법이있다 (PS. 일리노이 콜이 아이를 프로그래머되지 않음) 여기

내 사용자 정의를 NSTextView입니다

class ESPasteView: NSTextView, NSTextViewDelegate { 

    override func drawRect(dirtyRect: NSRect) { 
     super.drawRect(dirtyRect) 
    } 

    override func paste(sender: AnyObject?) { 
     Swift.print("user tries to paste") 
     super.pasteAsPlainText(nil) 
    } 

} 

죄송합니다. 하지만 난 내 자신의 응용 프로그램에서 일하고있다. 그래도 수정해야했다. 일해야한다.

신용 : 켄 Thomases

How to disable context menus with right mouse click in an NSTextField (Cocoa)?

와 누가는 필드 편집기

+0

감사합니다.이 기법을 사용하여 'NSTextField'에서 복사 할 때 대지로 복사 한 텍스트를 사용자 정의합니다. 필자는 필드 편집기의'copy (_ :)'메소드를 오버라이드하고 오버라이드 된 구현 내에서 수동으로 페이스트 보드에 커스터마이즈 된 텍스트를 설정한다. – Andrew