2009-01-31 3 views
2

У меня есть пользовательский NSControl, который действует как своего рода двумерный слайдер, где вы можете перетаскивать ручку вокруг представления. Я добавил несколько методов, специфичных для класса, и единственными, с которыми я столкнулся, были действия мыши и drawRect. Мой вопрос в том, как мне заставить его реализовать целевое действие? Как я могу заставить его вести себя как слайдер и непрерывно отправлять сообщения о действиях связанным объектам? На данный момент я могу подключить его к интерфейсу, но никаких действий не отправлено. Я много читал о методах sendActionOn: и sendAction: to:, но я не знаю точно, как их использовать. Если кто-то объяснит это, я уверен, что получу его.Пользовательский NSControl target/action howto!

ответ

-2

-sendActionOn: применим только в том случае, если вы подклассифицируете NSControl и реализуете ячейку, которой вы не являетесь.

В -mouseDragged: (или какой-либо метод вызван от -mouseDragged:, чтобы изменить положение ползунка), вы должны просто позвонить [[self target] performSelector:[self action]].

+12

Это неверно по двум причинам. Сначала он игнорирует цепочку ответчиков, а второй не передает отправителя в качестве параметра. Правильный способ сделать это: [[NSApp sendAction: [self action] to: [self target] from: self] ' – Sven

+0

С включенным ARC вы также получаете предупреждение с помощью метода' performSelector: '. –

Смежные вопросы