为什么我的绘制方法没有在子类MTKView中调用?

问题描述 投票:0回答:1

我试图绘制从MTKView子类的视图,但绘图方法没有被调用。

@interface GameViewController : MTKView
@end

@implementation GameViewController
{
   ...
}

- (BOOL)acceptsFirstResponder
{
    return YES;
}

- (void)drawRect:(CGRect)rect
{
    NSLog(@"drawRect\n");
}

- (void)draw:(CGRect)rect
{
    NSLog(@"draw\n");
}

没有记录任何已记录的方法。为什么?

根据documentation,我应该使用委托或子类MTKView。我选择了子类,因为我的理解是我可以使用键盘输入,这就是我想要的。

objective-c macos metal
1个回答
0
投票

你已经实现了-draw:方法。这不是对MTKView的任何方法的重写。 MTKView有一个不带参数的-draw方法。如果要覆盖该方法,则需要更改方法的签名。

也就是说,重写-draw以记录消息然后调用超类实现是合理的,但是你不应该覆盖它来进行实际的绘制。为此目的,应该重写-drawRect:方法。我不知道为什么没有调用你的方法的覆盖(虽然你确实得到了错误的参数类型)。

© www.soinside.com 2019 - 2024. All rights reserved.