NSFontPanel
을 사용하는 애플리케이션이 있습니다. 이 같은 폰트 패널을여validModesForFontPanel을 호출하지 않음
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];
난 후 패널의 변화를 폰트 반응 -(void)changeFont:(id)sender
방법이있다. 이 모든 것이 잘 작동합니다.
지금, 나는 글꼴 옵션 중 일부를 사용하지 않으려는, 그래서 NSFontPanelValidation
프로토콜의 validModesForFontPanel
방법 구현 :
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
NSLog(@"validModesForFontPanel");
return NSFontPanelFaceModeMask | NSFontPanelCollectionModeMask | NSFontPanelSizeModeMask;
}
그러나,이 방법은 결코 호출되지 도착합니다. 문서에서 는 말한다 : "이 메시지는 방법을 구현하는 첫 번째로 반응에 리스폰 더 체인을 전송 이상적으로 그 객체가 첫 번째로 반응 또한 changeFont이 :. 구현하는 것을 발견해야한다."
내가 changeFont
을 구현합니까 이 응답자에서는 내가 알지 못하는 다른 응답자가 없으면이 메시지가 어떻게되는지 알지 못합니다.
누구에게 의견이 있습니까?
안녕 JPed를, 답장을 보내 주셔서 감사합니다. 모든 것이'NSFontManager'를 통과했다는 것을 이해하고 있었지만 잘못된 것 같습니다. 어쨌든 위의 코드는 NSFontPanel의 델리게이트가 NSWindowDelegate의 인스턴스 여야하고'self'는 NSViewController의 서브 클래스이므로 작동하지 않습니다. 그것은 나에게이 경고를 준다 :'경고 : 'TextViewController * const __strong'을 'id' ' –
pajevic
과 호환되지 않는 타입의 매개 변수로 다시 보냅니다. 나는 그것이 작동하지 않는다고 말했을 때 나는 약간 빠른 것이었다. 실제로 경고를 받는다는 사실에도 불구하고 실제로 그렇게합니다. 이게 당신이 마주 쳤던 것입니까? – pajevic
나는 마침내 그것을 알아 냈다. 클래스가 NSWindowDelegate 프로토콜을 구현하지 않았기 때문에 경고가 발생했습니다. 나는 이것 모두가 조금 더 잘 문서화 되었으면 좋겠다. 어쨌든, 답장을 보내 주셔서 감사합니다. D – pajevic