Keyboard observer with completion block