La clé, j'ai trouvé, est de sous-classer UISegmentedControl. Dans des conditions normales, UISegmentedControl ne répond tout simplement pas à UIControlEventTouchUpInside. Par le sous-classement UISegmentedControl, vous pouvez redéfinir la fonction touchesEnded (qui est essentiellement ce qui est déclenché lorsque l'utilisateur touche un objet) en tant que tel:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
[self.superview touchesEnded:touches withEvent:event];
MyViewController *vc; // the view controller which contains the UISegmentedControl
for (UIView* next = [self superview]; next; next = next.superview) {
UIResponder* nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[MyViewController class]]) {
vc = (MyViewController*)nextResponder;
break;
}
}
if (vc) {
[vc myFunction];
}
}
mise en œuvre tueur – lol