为什么我的绘制方法没有在子类 MTKView 中调用?
Why is my draw method not called in a subclassed MTKView?
我正在尝试绘制到 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");
}
None 个已记录的方法正在被调用。为什么?
根据 documentation,我应该使用委托或子类 MTKView
。我选择子类化是因为我的理解是我可以用它来使用键盘输入,这就是我想要的。
您已经实现了 -draw:
方法。也就是说 不是 对 MTKView
的任何方法的覆盖。 MTKView
有一个不带参数的 -draw
方法。如果您打算覆盖该方法,则需要更改方法的签名。
也就是说,重写 -draw
以记录消息然后调用超类实现是合理的,但您不应该重写它来进行实际绘图。为此,应该重写 -drawRect:
方法。我不知道为什么你重写的那个方法没有被调用(尽管你确实弄错了参数类型)。
我正在尝试绘制到 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");
}
None 个已记录的方法正在被调用。为什么?
根据 documentation,我应该使用委托或子类 MTKView
。我选择子类化是因为我的理解是我可以用它来使用键盘输入,这就是我想要的。
您已经实现了 -draw:
方法。也就是说 不是 对 MTKView
的任何方法的覆盖。 MTKView
有一个不带参数的 -draw
方法。如果您打算覆盖该方法,则需要更改方法的签名。
也就是说,重写 -draw
以记录消息然后调用超类实现是合理的,但您不应该重写它来进行实际绘图。为此,应该重写 -drawRect:
方法。我不知道为什么你重写的那个方法没有被调用(尽管你确实弄错了参数类型)。