UIAlertView
.
使用
UIAlertController
相反,它在iOS8/9/10中可用,并且像一个合适的
UIViewController
与一起使用时看起来像旧警报
UIAlertControllerStyle.Alert
风格,你不会有任何问题
MotionBegan/MotionEnded
所以
您可以覆盖
运动开始/运动结束
在每个
UI视图控制器
:
public override void MotionBegan(UIEventSubtype motion, UIEvent evt)
{
Console.WriteLine("MotionBegin");
base.MotionBegan(motion, evt);
}
public override void MotionEnded(UIEventSubtype motion, UIEvent evt)
{
Console.WriteLine("MotionEnded");
base.MotionEnded(motion, evt);
}
或
创建您自己的UIWindow子类,这样您将获得全局运动事件(您只需发布(
PostNotificationName
)如果应用程序的其他区域需要响应运动事件,请通过通知中心。
public class ShakeWindow : UIWindow
{
public ShakeWindow() : base() { }
public ShakeWindow(IntPtr handle) : base(handle) { }
public override void MotionBegan(UIEventSubtype motion, UIEvent evt)
{
Console.WriteLine("Window MotionBegin");
NSNotificationCenter.DefaultCenter.PostNotificationName("ShakeMe", this);
base.MotionBegan(motion, evt);
}
public override void MotionEnded(UIEventSubtype motion, UIEvent evt)
{
Console.WriteLine("Window MotionEnded");
base.MotionEnded(motion, evt);
}
}
UI警报控制器
示例使用
NSNotificationCenter
:
var button2 = new UIButton(UIButtonType.RoundedRect);
button2.SetTitle("Alert 2", UIControlState.Normal);
button2.Frame = new CGRect(20, 60, 100, 40);
button2.TouchUpInside += (object sender, EventArgs e) =>
{
var alert2 = UIAlertController.Create("StackOverflow", "Shake me now", UIAlertControllerStyle.Alert);
NSNotificationCenter.DefaultCenter.AddObserver(new NSString("ShakeMe"), (obj) =>
{
alert2?.DismissViewController(true, null);
});
alert2.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, (UIAlertAction obj) =>
{
alert2.DismissViewController(true, null);
}));
PresentViewControllerAsync(alert2, true);
};
Add(button2);