The problem is that you're having your UISegmentedControl respond to "UIControlEventValueChanged". If you only want your method to be called when you touch up inside then instead have the UISegmentedControl respond to "UIControlEventTouchUpInside". You shouldn't need to subclass or override anything.
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(yourMethod:)
forControlEvents:UIControlEventTouchUpInside];
The available control events are found here: https://developer.apple.com/library/ios/documentation/uikit/reference/UIControl_Class/Reference/Reference.html