I understand that I want to learn, but you should probably do it on something different from the controller. In general, UIKit does not support KVO unless explicitly documented.
If you want to control the control, you need to use the standard control API.
However, to help you understand what is happening with your error ...
Are you trying to use this code ...
[self.sldMoving addObserver:self forKeyPath:@"self.sldMoving.value" options:NSKeyValueObservingOptionNew context:NULL];
which translates freely into something like that ...
"Yo, sldMoving , I want you to add an observer object ( self ). Now that the observer wants to see what happens with this path: self.sldMoving.value , namely the new changes.
So, the sldMoving object looks inside of itself to see if this key path makes sense. However, this does not make sense, so it raises this exception. Why doesn't that make sense? Well, there is no way to go to the way, because these names do not make sense to UISlider.
Now, if you changed it like this:
[self addObserver:self forKeyPath:@"sldMoving.value" options:NSKeyValueObservingOptionNew context:NULL];
You will at least get a successful registration. It talks to the self object and wants it to observe sldMoving.value , which it can do because it has a KVO-compatible sldMoving (assuming sldMoving is KVO-compatible, and I'm sure it is possible if you have it didnβt add some funky path different from the traditional ones), and it has value .
Alternatively, you can also do this ...
[self.sldMoving addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:NULL];
Now that you are using KVO, you need to put together a bunch of gotchas, so you should really read the KVO programming guide: http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/Articles/KVOCompliance. html
Now do not be surprised if you see only the observed changes at the first click of the slider, because you will skip all other changes in the values ββ...