シェイクの検知
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の変更が必要になったので追記した。