2011-11-29 2 views
2

내가 아주 간단한 구현을 시도 코코아 바인딩을 사용하여 모델링 프로그램 텍스트 필드 값의 변경 내용을 전파 :이 같은

@implementation ScrollingTextField 
- (void)scrollWheel:(NSEvent *)event { 
    self.doubleValue -= event.scrollingDeltaY; 
} 
@end 

내가 다른 객체에 스크롤 텍스트 필드의 value 바인딩. 스크롤하면 이제 텍스트 필드의 보이는 텍스트가 잘 업데이트됩니다. 그러나 바인딩 된 값은 변경되지 않습니다.

왜 바운드 값이 변경되지 않습니까? 또는 : 바운드 값이 변경 사항을 인식하도록하려면 어떻게해야합니까?

답변

5

바인딩 된 값은 by Apple's design을 변경하지 않습니다. 변경 후 모델 자신의 가치를 전파하기 위해,이 코드를 적용 : (!이 애플 링크에 대한 감사 @DrummerB)

NSDictionary *bindingInfo = [self infoForBinding:NSValueBinding]; 
[[bindingInfo valueForKey:NSObservedObjectKey] setValue:self.doubleValue 
              forKeyPath:[bindingInfo valueForKey:NSObservedKeyPathKey]];