2013-06-29 21 views
20

Utworzono niestandardowy typ widoku kontrolki widoku, podklasy UIView. Chciałbym móc wysłać zdarzenie sterujące "UIControlEventValueChanged" z tej kontroli, aby można było zarejestrować się w tym sterowniku widoku za pomocą kontrolki.Jak mogę wysłać zdarzenie "UIControlEventValueChanged" z kontrolki niestandardowej?

Jak mogę uzyskać niestandardową kontrolę, aby wywołać to zdarzenie, gdy uznałem, że powinno zostać wyzwolone?

+0

protokoły lub poprzez NSNotificationCenter jest droga Osobiście wybrałbym protokoły w tym przypadku. Zajrzyj na http://iosdevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html – Groot

Odpowiedz

46

Zakładając, że formant niestandardowy rozciąga UIControl, a następnie po prostu zrobić.

[self sendActionsForControlEvents:UIControlEventValueChanged]; 

ten wezwie wszystkie dotychczas zarejestrowane cele (przez addTarget:action:forControlEvents: że to zdarzenie działo się

+0

Wszystkie moje kontrole rozszerzają UIView, ponieważ UIControl rozszerza UIView do ciebie Myślę, że mógłbym po prostu przełączyć całą moją kontrolę na podklasę UIControl bez posiadania t o zmienić cokolwiek innego? – cgossain

+3

Ustawienia niestandardowe powinny zawsze rozszerzać "UIControl". Daje to wszystkie korzyści tej klasy. Gdy zmienisz klasę, aby rozszerzyć 'UIControl', jedyną rzeczą, którą możesz zrobić, to usunąć kod, który teraz dostajesz za darmo z' UIControl', którego nie dostałeś z 'UIView'. – rmaddy

+0

Idealny. Dziękuję Ci. Twoja odpowiedź była dokładnie tym, czego szukała. – cgossain