Iphone 如何使Nib正确加载自定义的UIScrollView子类?

Iphone 如何使Nib正确加载自定义的UIScrollView子类?,iphone,cocoa-touch,uikit,interface-builder,nib,Iphone,Cocoa Touch,Uikit,Interface Builder,Nib,我的笔尖里有一个很好的UIScroll视图,效果很好。然后,我有一些非常特殊的需求和子类UIScrollView。在我的Nib中,我将identity inspector中的类更改为我的子类 但由于某些原因,当nib加载程序从nib构建所有这些对象时,my-initWithFrame:方法永远不会被调用。实际上我现在在我的子类中没有改变任何东西。滚动视图也可以正常工作。即使我告诉nib出于测试目的它应该是一个SpecializedIsCrollView,它也应该是一个空白的UIScrollVie

我的笔尖里有一个很好的UIScroll视图,效果很好。然后,我有一些非常特殊的需求和子类UIScrollView。在我的Nib中,我将identity inspector中的类更改为我的子类

但由于某些原因,当nib加载程序从nib构建所有这些对象时,my-initWithFrame:方法永远不会被调用。实际上我现在在我的子类中没有改变任何东西。滚动视图也可以正常工作。即使我告诉nib出于测试目的它应该是一个SpecializedIsCrollView,它也应该是一个空白的UIScrollView

在子类分类一个UISCLVIEW的同时还需要使用一个笔尖文件来透视它时,我还有什么要考虑的吗?

我的专用初始值设定项如下所示:

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        NSLog(@"Hello !!!!!!!!!!!!!");
    }
    return self;
}

如果我试着从Nib加载Hello,我永远不会在控制台中看到它。当然,如果我自己分配并初始化它,它会工作。但是如果我可以使用那个该死的界面生成器,我不想用编程的方式来定位我的滚动视图。

nib或xib中的对象被存储为序列化对象,这可能意味着您必须使用
awakeFromNib
方法,因为从不调用init方法。

扩展
initWithCoder,一定要调用super方法。在这个超级调用过程中,您的类将被调用
setFrame

然后可以重新使用标准的
initWithFrame
调用
initWithCoder
,界面生成器将控制框架大小

- (id)initWithCoder:(NSCoder *)aDecoder {
    [super initWithCoder:aDecoder]; // Required. setFrame will be called during this method.
    return [self initWithFrame:[self frame]];
}