由于在我的第二个应用程序中没有调用 of,因此手部光标始终initWithFrame无法调整。这是来自 Apple 的“创建自定义视图”文档:CPTGraphHostingViewnil
在 Interface Builder 中创建的视图实例在加载它们的 nib 文件时不会调用 initWithFrame:,这通常会导致混淆。请记住,Interface Builder 在保存 nib 文件时会归档对象,因此视图实例已经创建并且 initWithFrame: 已经被调用。
当由于加载 nib 文件而创建视图时,awakeFromNib 方法提供了对视图进行初始化的机会。加载包含视图对象的 nib 文件时,当所有对象都已取消归档时,每个视图实例都会收到一条 awakeFromNib 消息。这为对象提供了一个机会来初始化未在 Interface Builder 中与对象一起存档的任何属性。
因此,我使用 Eric Skroch 的建议对in 中CPTGraphHostingView的游标进行了子类化并加载:NSCursorawakeFromNib
MyGraphHostingView.h:
#import <CorePlot/CorePlot.h>
NS_ASSUME_NONNULL_BEGIN
@interface MyGraphHostingView : CPTGraphHostingView
@end
NS_ASSUME_NONNULL_END
MyGraphHostingView.m:
#import "MyGraphHostingView.h"
@implementation MyGraphHostingView
-(void)awakeFromNib
{
[super awakeFromNib];
if (!self.closedHandCursor) {
self.closedHandCursor = [NSCursor closedHandCursor];
}
if (!self.openHandCursor) {
self.openHandCursor = [NSCursor openHandCursor];
}
self.allowPinchScaling = YES;
}
@end