如何在Monotouch中继承UIApplication?

Kru*_*lur 6 c# uikit xamarin.ios uiapplication ios

编辑:

几年后,事情变得更容易了.现在可以省略Register()应用程序和应用程序委托上的 属性,而是使用:

UIApplication.Main(args, typeof(CustomApp), typeof(CustomAppDelegate));


为了能够覆盖UIApplication.SendEvent(),我想要子类化UIApplication:

public class UIApplicationMain : UIApplication
{
    public UIApplicationMain () : base()
    {
    }

    public override void SendEvent (UIEvent uievent)
    {
        base.SendEvent (uievent);
    }
}
Run Code Online (Sandbox Code Playgroud)

在main.cs中我使用以下代码:

public class Application
{
    static void Main (string[] args)
    {
        UIApplication.Main (args, "UIApplicationMain", "AppDelegateBase");
    }
}
Run Code Online (Sandbox Code Playgroud)

但它失败了:

Objective-C exception thrown.  Name:
Run Code Online (Sandbox Code Playgroud)

NSInternalInconsistencyException原因:无法实例化UIApplication子类实例.没有加载名为UIApplicationMain的类.

所以我猜错了一些属性.但是在哪里和哪里?

pou*_*pou 12

[Register]属性添加到新类型,例如:

 [Register ("UIApplicationMain")]
 public class UIApplicationMain : UIApplication {
    ...
Run Code Online (Sandbox Code Playgroud)

这将允许本机端在Main执行时实例化正确的类型.