シェイクの検知

App起動時にあらかじめUIApplication.SharedApplication.ApplicationSupportsShakeToEditをtrueにしておく。

public partial class AppDelegate : UIApplicationDelegate
{
  public override bool FinishedLaunching (UIApplication app, NSDictionary options)
  {
    // (略)
    UIApplication.SharedApplication.ApplicationSupportsShakeToEdit = true;
    // (略)
  }
}

そしてUIViewControllerを継承して

public override void ViewDidAppear (bool animated)
{
	base.ViewDidAppear (animated);
	this.BecomeFirstResponder();
}

public override void ViewWillDisappear (bool animated)
{
	this.ResignFirstResponder();
	base.ViewWillDisappear (animated);
}

public override bool CanBecomeFirstResponder {
	get {
		return true;
	}
}

public override void MotionEnded (UIEventSubtype motion, UIEvent evt)
{
	base.MotionEnded (motion, evt);
	if (motion == UIEventSubtype.MotionShake) {
		// なにか処理
	}
}

で検知できる。


追記 2011-10-14 10:54
MonoTouch v4.1以降はUIApplication.SharedApplication.ApplicationSupportsShakeToEditの変更が必要になったので追記した。