添加背景时禁用按钮

时间:2014-11-01 18:37:31

标签: ios uiview uiviewcontroller

我正在使用Parse anypic教程,我想创建一个不同的UI。但我有一些麻烦。

所以,我的ViewController是这样的:

@interface PAPHomeViewController ()
@property (nonatomic, strong) PAPSettingsActionSheetDelegate *settingsActionSheetDelegate;
@property (nonatomic, strong) UIView *blankTimelineView;
@end

@implementation PAPHomeViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"LoadView is called");

    // Present Anypic UI
    [self presentUI];

}

-(void) presentUI {

/*UIImageView *backgroundImageView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
        [backgroundImageView setImage:[UIImage imageNamed:@"DefaultAnypic.png"]];
        self.view = backgroundImageView;*/

    // Settings button
    self.settingsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [self.settingsButton addTarget:self
               action:@selector(settingsButtonAction:)
     forControlEvents:UIControlEventTouchUpInside];
    [self.settingsButton setTitle:@"Settings" forState:UIControlStateNormal];
    self.settingsButton.frame = CGRectMake(200.0, 200.0, 100.0, 100.0);
    [self.view addSubview:self.settingsButton];
}

及其.h文件是这样的:

@interface PAPHomeViewController : PAPPhotoTimelineViewController

@end

PAPPhotoTimelineViewController也是一个单独的ViewController,Home扩展自它,它是一个tableViewController,它也调用ViewDidLoad。

问题:

使用上面的代码,我看到了我的按钮,我可以点击我的按钮。

但是,如果我取消注释背景的东西,我确实看到了背景,我确实看到了按钮,但它无法点击 - 就像没有触摸按钮一样。

我也很困惑,现在我正在扩展另一个ViewController,它也实现了viewDidLoad,为什么它们都被调用,按顺序等等。

1 个答案:

答案 0 :(得分:2)

您不应该为UIView分配新的self.view

而不是self.view = backgroundImageView;,只需将其添加为随机视图即可。

[self.view addSubview:backgroundImageView];

这样做,您将按照正确的方式添加子视图:您的backgroundImageView将显示在您的视图中,您的按钮将添加到其上方。