Apply simpler strategy (no swizzling; sequence of events under control). Add method to retrieve the first responder view contained within a view
Update scroll view offset to make first responder visible. Not perfect yet
Adjust scroll view frame and content offset when appropriate
Animate content offset changes in sync with the keyboard