У меня установлен NSSlider в непрерывном режиме. Следовательно, когда пользователь перемещает слайдер, мой метод действия вызывается несколько раз. Нам нужно отменить регистрацию только для последнего значения слайдера, и нам не нужно отслеживать столько промежуточных значений. Я понимаю, что я могу отменить регистрацию с помощью disableUndoRegistration
на менеджере отмены и вернуть его обратно с помощью enableUndoRegistration
, но где я могу их назвать так, чтобы мы не делали несколько регистраций отмены?NSSlider несколько отмененных регистраций
- (IBAction) changeSpacing:(id) sender {
self.someValue = [sender floatValue];
//do undo registration, I would prefer to do this only for the last
//value of the slider
[[[myDocument undoManager] prepareWithInvocationTarget:self] setSomeValue:oldValue]
}
Это работает! Теперь вопрос в том, что каждый выполнит отмену операции NSSlider, как это, или есть лучший способ? – AmaltasCoder
Другой подход создает подкласс NSSlider. затем переопределите метод mouseDown: 'и уведомите мышь сразу после вызова' mouseDown: 'супер. 'NSSlider' никогда не вызывает' mouseUp: ', поэтому нам нужно обходное решение. но этот способ не изящный, я думаю. – bluedome