1

我正在 ios 上使用 robovm 和 libgdx 开发游戏,如何覆盖UIViewController.viewWillAppear

(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillHide:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];
}
4

2 回答 2

3

您可以通过提供与父类同名的方法来覆盖您的方法:该新方法将替换继承的定义。确保您的方法具有与您要覆盖的方法相同的返回类型并采用相同数量和类型的参数。

因此,只需-(void)viewWillAppear:(BOOL)animated在您的子类中重新定义。

根据Apple Doc ,不鼓励通过使用属性进行子类化。

于 2014-01-26T11:47:59.493 回答
1

通常你有两种方法:

  • 子类化您的 viewController 并重新定义 -(void)viewWillAppear:(BOOL)animated

  • 在 UIViewController 的类别中执行方法调配(参见iPhone 设备上的方法调配

于 2014-01-26T11:36:51.387 回答