2010-04-18 2 views
0

Я изучаю Cocoa Touch несколько дней, и сегодня застряли, ища способ реализовать пользовательское событие. Событие, которое я могу увидеть в Connection Inspector для моего подкласса UIView.
Что у меня:
Есть UILabel и MyView: UIView на MainVindow. MyView содержит UISlider. Интерфейсы для контроллера и MyViewГде события в Cocoa Touch?

// Controller.h 
@interface Controller : NSObject { 
    IBOutlet UILabel *label; 
    IBOutlet MyView *myView; 
} 
// I suppose that there should be something like -(IBAction) changeLabelValue for myView event 
@end 

// MyView.h 
@interface MyView : UIView { 
    IBOutlet UISlider *slider; 
    float value; 
} 
- (IBAction) changeValue; //for slider "Changed Value" event 

Что я хочу:
Добавить что-то в MyView, что позволяет ему подняться событие после изменения значения .
Может ли кто-нибудь мне помочь? Моя основная область программирования - .NET, и я начинаю думать, что ее терминология не подходит для этого случая.

Спасибо.

+2

Вы правы, что ваша терминология .NET является для вас проблемой, поскольку я не могу понять, что вы просите. Если вы хотите, чтобы ваш IBAction выполнялся при изменении слайдера, вы просто перетаскиваете соединение в IB. Это похоже на текстовые объекты, но вы можете захотеть найти несколько иной подход. –

+0

Хорошо, попробуйте объяснить мой сценарий более четко. В myView я хочу получить собственное значение из слайдера. Затем после некоторой модификации (получить квадратный корень, например) значение будет готово к использованию. Ярлык должен показать это окончательное значение. Моя проблема в том, как этикетка будет знать, что изменение стоимости. И я думаю, что реализовать это сообщение, как стандартное «событие» контроля (которое я вижу в группе «События» Инспектора связи для UISlider, UButton и т. Д.). Другими словами - создайте настраиваемый элемент управления, расширяющий функции UISlider. – yesenin

ответ

2

Я не знаю, правильно ли я вас понимаю, но я думаю, что вы хотите отвечать на пользовательские события от компонентов интерфейса. В «Какао» термин «событие» используется только для объектов, которые описывают фактическое событие, например, прикосновение вниз или клавиша вверх.

Чтобы ответить на события более высокого уровня, например перетаскивание ползунка или нажатие кнопки, Cocoa использует парадигму целевого действия. Вы настраиваете компонент пользовательского интерфейса (класс производных классов UIControl), чтобы отправить данное сообщение заданной цели всякий раз, когда компонент обнаруживает изменение его состояния.

Для установки цели и способа действия вы можете использовать Interface Builder или метод UIControladdTarget:action:forControlEvents:.

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