How can I send a "UIControlEventValueChanged" event from my custom control?
Asked Answered
E

1

34

I've created a custom picker view type of control by subclassing UIView. I would like to be able to send a "UIControlEventValueChanged" control event from within this control, so that I can register for it in whichever view controller is using the control.

How can I can I get my custom control to trigger this event when I deem it should be triggered?

Exception answered 29/6, 2013 at 23:24 Comment(2)
Protocols or via NSNotificationCenter is the way to go. Would personally choose protocols in this case. Have a look at iosdevelopertips.com/objective-c/…Incurrent
These days it is simply sendActions(for: .blah) eg for .valueChangedObeded
A
71

Assuming your custom control extends UIControl, then you simply do:

[self sendActionsForControlEvents:UIControlEventValueChanged];

This will call all registered targets (via addTarget:action:forControlEvents: that this event has happened.

Use this function where you deem should trigger a value has changed

Aeromedical answered 29/6, 2013 at 23:31 Comment(2)
All my controls extend UIView since UIControl extends UIView do you think I could simply switch all my control to subclass UIControl without having to change anything else?Exception
Custom controls should always extend UIControl. This gives you all of the benefits of that class. Once you change your class to extend UIControl, the only thing you may have to do is strip out code you now get for free from UIControl that you weren't getting from UIView.Aeromedical

© 2022 - 2024 — McMap. All rights reserved.