Iphone 将UIButtons添加到Cocos2d项目

Iphone 将UIButtons添加到Cocos2d项目,iphone,uikit,cocos2d-iphone,uibutton,Iphone,Uikit,Cocos2d Iphone,Uibutton,在Cocos2d中,我读到了这一点 [[[[CCDirector sharedDirector] openGLView] window] addSubview:someButton]; 将向主窗口添加UIView: 然而,在我的代码中,我有以下几点: - (void)onEnterTransitionDidFinish { UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]

在Cocos2d中,我读到了这一点

[[[[CCDirector sharedDirector] openGLView] window] addSubview:someButton];
将向主窗口添加UIView:

然而,在我的代码中,我有以下几点:

- (void)onEnterTransitionDidFinish {
    UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    [[[[CCDirector sharedDirector] openGLView] window] addSubview:button];
}
但没有按钮可见。此方法是CCLayerColor的一部分,CCLayerColor是应用程序中显示的第一个场景(如果有必要的话)。我做错了什么?谢谢

编辑:我可以确认按钮正在添加到windows子视图中,因为

[[[[[CCDirector sharedDirector] openGLView] window] subviews] count]
在注释/取消注释addSubview行时显示差异。那么为什么按钮没有出现呢

编辑2:

多亏了@Marine,我发现我的问题在于我如何声明我的按钮;使用类型为:的
按钮解决了问题,因为此代码可以工作:

UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(100, 100, 100, 100)];
[[[[CCDirector sharedDirector] openGLView] window] addSubview:button];
有人能解释一下为什么使用这个类方法有效而使用
initWithFrame:
无效吗?因为我不想创建太多的自动释放对象,也因为我有一些UIButton子类,当我使用
buttonWithType:
方法时,它们不会出现

编辑3(解决方案)


使用类型为:
按钮以外的任何东西都不起作用的原因是,如果不使用该方法创建按钮,则不会设置按钮的背景色,默认情况下,它是
clearColor
。使用
[button setBackgroundColor:[UIColor redColor]]
或任何其他颜色可修复此问题。此外,如果使用自定义按钮类,如,如果按钮未连接到nib,则可能需要手动调用
[button awakeFromNib]

尝试使用OpenGL窗口的bringsubviewtofront方法,将最近添加的按钮作为参数传递。还要确保按钮的框架位于屏幕的可见部分。试着摆弄一下它的位置。

试试下面的代码,它会对你有所帮助

-(id) init 
{
    if((self = [super init])) 
    {
    UIView* glView = (UIView*) [[CCDirector sharedDirector] openGLView];        
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn setFrame:CGRectMake(100, 100, 250, 250)];
    [btn addTarget:self action:@selector(actionper:) forControlEvents:UIControlEventTouchUpInside];
            [glView addSubview:btn];
    }
    return self;
}
-(void) actionper : (id) sender
{
    printf("\n Stuff of the Code on button Press");
}

我已将问题的解决方案发布为问题的编辑。

作为另一项测试,尝试创建uiview并将按钮添加到OpenGL窗口中,然后再将uiview添加到OpenGL窗口中。在使用[UIButton buttonWithType:…]方法之前,我也无法显示按钮。奇怪。看我的编辑,我解决了问题。天哪,非常感谢!!!!!你不知道这对我有多大帮助。我刚开始做objective-C/iOS/Cocos2d开发,我甚至不知道从哪里开始解决这个问题。谢谢你,老兄,你让我开心了!!!!没问题。我很高兴能帮助你!