Я пытаюсь создать текстовое поле для набора номера, то есть текстовое поле, которое работает вместе с NSStepper, сидящим рядом с ним.
В текстовом поле должны отображаться числа с плавающей точкой, и пользователь может использовать колесо прокрутки для регулировки отображаемого числа, а также клавиши со стрелками вверх и вниз для того же эффекта.
Он также должен переключаться на разные приращения в зависимости от того, какие клавиши-модификаторы нажаты.
Позже я мог бы реализовать поведение, когда пользователь перетаскивает курсор мыши над текстовым полем влево или вправо, нажимая alt, он будет определять, где (под какой цифрой числа) была вставлена каретка вставки, и только увеличивать это число так, чтобы пользователь можно быстро обновить единицы, десятки, сотни и т. д.
Несмотря на то, что клавиши-модификаторы и детали перетаскивания мыши, скорее, просто детали, мой вопрос больше касается основ достижения этого наиболее ненавязчивым образом, так что привязки и другие функции все еще продолжают работать.
До сих пор я получил подкласс NSTextField (с форматером чисел, присоединенным к его ячейке в IB) и подкласс NSTextView для того, чтобы быть редактором поля текстового поля набора номера. Это сделано для того, чтобы я мог переопределить keyDown: чтобы происходило обновление клавиш со стрелками.
Проблема в том, что возвращение этого редактора полей для текстового поля набора номера из windowWillReturnFieldEditor: toObject: делегата окна, кажется, нарушает привязки и, как правило, кажется, что я не должен этого делать.
Я поступаю неправильно?
PS .: Вы можете найти только код подкласса в http://gist.github.com/361265
Я не был уверен, должен ли я публиковать все это здесь.