2016-10-14 5 views
2

Xcode 8에 마법사로 만든 NSDocuments & 스토리 보드 앱이 있습니다. ViewController Scene에 NSTextView를 추가했습니다. 특정 메뉴 항목은 굵게 및 기울임 꼴과 같이 비활성화됩니다.NSTextView에 밑줄을 긋기는 할 수 있지만 굵게 표시되지 않습니다.

첫 번째 응답자를 보면 굵게 및 기울임 꼴에 대한 작업이 없습니다. 나는이 방법들을 직접 써야 하나? 응답기 체인이 올바르게 설정되지 않았기 때문입니까? 왜 밑줄이 나타나지만 굵게 표시되지 않습니까?

편집 : 이미지를 추가하여 검사기 막대로 텍스트를 편집하는 방법을 보여 주지만 서식 메뉴에 예상되는 명령이 표시되지 않습니다. 이 문제의 역사 (?) 이유가

Image showing how I can modify text with the Inspector Bar, but not with the menu, apart from Underlining

+0

죄송합니다. "특정 메뉴 항목이 사용 중지되었습니다"라는 것은 무엇을 의미합니까? 이 메뉴 항목은 어디에 있습니까? – rocky

+0

응용 프로그램의 주 메뉴에서 마법사로 만든 메뉴입니다. 항목은 서식/글꼴 아래에 있습니다. – Henrik

+0

NSText API를 보면 밑줄을 긋는 방법이있는 것 같지만 굵은 글씨와 기울임 꼴 텍스트는 글꼴 모음을 변경해야합니다. 아마 그것이 그 것이다. – Henrik

답변

6

. 주 메뉴가 xib 파일에서 생성되었을 때, xib 파일은 자동으로 NSFontManager 인스턴스를 포함하고 Bold와 같은 메뉴 항목이 그것에 연결되었습니다. 그러나 현대 스토리 보드에는 사전 설정된 NSFontManager 인스턴스가 없습니다.

그러면 다음 단계에 따라 수동으로 FontManager에 연결할 수 있습니다.

  1. 응용 프로그램 장면에서 일반 개체 인스턴스 (파란색 큐브)를 만듭니다.
  2. Object 인스턴스의 클래스를 NSFontManager로 변경합니다. enter image description here
  3. 메뉴 항목을 addFontTrait(_:) fontManager의 동작에 연결하십시오. 마찬가지로, "큰"과 "작은"항목을 modifyFont(_:)에 연결하십시오. enter image description here

menuItems 태그도 설정해야하지만 실제로 설정되어 있습니다. menuItem의 태그가 0 인 경우에만 해당 태그를 수동으로 설정하십시오.

+0

사진과 함께 훌륭한 설명. 많은 감사합니다. – Henrik

+0

아, https://developer.apple.com/library/content/documentation/TextFonts/Conceptual/CocoaTextArchitecture/FontHandling/FontHandling.html#//apple_ref/doc/uid/TP40009459-CH5-SW17 여기에서 찾을 수 있습니다. https : //developer.apple.com/library/content/documentation/TextFonts/Conceptual/CocoaTextArchitecture/FontHandling/FontHandling.html#//apple_ref/doc/uid/TP40009459-CH5-SW11 –

0

메뉴 항목에서 첫 번째 응답자로 Ctrl 키를 끌면 메뉴보기에서 동일한 옵션이 표시되며 Ctrl 키를 누른 채로 클릭하면됩니다. 그런 다음 방금 연결 한 모든 기능을 구현합니다. 파일> new를 newDocument에 연결하고 ViewController에 구현하면

func newDocument(_ sender: Any?){ 
    print("func newDocument(_ sender: Any? \(String(describing: sender)))") 
} 

이 호출됩니다. 첫 번째 응답자는 클래스로 NSFontManager가있는 추가 된 Object와 동일한 모든 메소드를 나열합니다. @IBAction을 연결하지 않기 때문에 @IBAction을 메서드 앞에 사용하지 않습니다.

관련 문제