Подтвердить что ты не робот

Как я могу получить значение NSSlider непрерывно?

Похоже, что NSSlider в Cocoa не предоставляет делегата для получения события, такого как Value Changed для UISlider.

Как я могу непрерывно получать значение NSSlider и отображать его, например, в NSTextField?

4b9b3361

Ответ 1

Вам нужно исследовать механизм cocoa Target/Action. Это базовая концепция cocoa, которую вы должны понять. Слайдеру (и любому другому элементу управления) можно назначить цель (некоторый объект контроллера) и действие (метод, который нужно вызывать для этого объекта контроллера).

Действие запускается, когда пользователь прекращает перетаскивание по умолчанию. Проверьте свойство Continuous ползунка в Интерфейсном Разработчике, чтобы оно вызывало действие при его скольжении.

Ответ 2

Одним из преимуществ использования подхода с таймером является то, что он работает в случае использования клавиатуры, а не мыши, для регулировки ползунка. Если у пользователя включен "Полный доступ с клавиатуры" в "Системных настройках", он может использовать клавишу "Tab" для фокусировки слайдера. Затем они могут удерживать нажатой клавишу со стрелкой, чтобы активировался автоповтор, после чего возникает ситуация, подобная перетаскиванию мышью: цель/действие многократно запускается, и вы хотите подождать минуту спокойствия, прежде чем сохранять в базе данных.

Вы должны быть осторожны, чтобы не удалить свой NSTimer преждевременно. Например, если пользователь закрывает приложение в течение этих нескольких секунд, вы, вероятно, захотите "сбросить" значение ползунка в базу данных перед завершением процесса.

Ответ 3

Программное решение, основанное на ответе Джошуа Ноцци:

стриж

slider.isContinuous = true

Objective-C

slider.continuous = YES;