如何在Monotouch中继承UIApplication?

时间:2011-09-30 11:39:35

标签: c# ios uikit xamarin.ios uiapplication

修改

几年后,事情变得更容易了。现在可以省略 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);
    }
}

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

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

但它失败了:

Objective-C exception thrown.  Name:
     

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

所以我猜错了一些属性。但是什么,在哪里?

1 个答案:

答案 0 :(得分:11)

为新类型添加 [注册] 属性,例如:

 [Register ("UIApplicationMain")]
 public class UIApplicationMain : UIApplication {
    ...

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