targetOffset = Math.max(Math.min(targetOffset - 10, 0), -size.get_Width());
PointF target = new PointF(0, targetOffset);
target = _overlay.get_Transform().TransformPoint(target);
// update and set the transform on the game view
UIView gameView = _overlay.get_Superview();
CGAffineTransform trans = gameView.get_Transform();
_gameViewTransform = trans.Invert().Invert(); // clone
trans.Translate(target.get_X(), target.get_Y());
gameView.set_Transform(trans);
_gameViewTransformed = true;
// touches outside of the keyboard will close the keyboard
_overlay.Add(_touchDetector);
}}));
center.AddObserver(UIKeyboard.get_WillHideNotification(),
new cli.System.Action$$00601_$$$_Lcli__MonoTouch__Foundation__NSNotification_$$$$_(new cli.System.Action$$00601_$$$_Lcli__MonoTouch__Foundation__NSNotification_$$$$_.Method() {
@Override public void Invoke (NSNotification nf) {
// bail if not transformed; this might be ok, if the keyboard was shown outside
// of our purview
if (!_gameViewTransformed) return;
UIView gameView = _overlay.get_Superview();
gameView.set_Transform(_gameViewTransform);
_gameViewTransform = null;
_gameViewTransformed = false;
_touchDetector.RemoveFromSuperview();
_platform._focus.update(null);
}}));