If the value-changed signal is connected through Interface Builder, then when the valid angles are set in viewDidLoad, the value-changed signal is triggered even though there was no user interaction or a call to setSelectedIndex:.
Limiting the angle in angleBetweenCenterAndPoint: disallows grabbing the knob in angle < minimumAngle and angle > maximumAngle. Since setValue:animated: checks the value limits we can simply remove checking the angle limits in angleBetweenCenterAndPoint:.
…is behavior can be disabled by the user.
…ds take the shortest path between two angles, which is not always what we want. Now uses a keyframe animation.