0

ビューの全領域をカバーするために、UIviewにボタンを追加しようとしています..次のように:

-(MBNHomeScreenButton*) initWithImage:(UIImage*)image 
              andHighlightedImage:(UIImage*)highlightedImage 
                         andTitle:(NSString*)aTitle 
                     withSelector:(SEL)actionButton
                      forDelegate:(UIViewController*)viewController{
self = [super init];
if (self) {
    self.frame = CGRectMake(0, 0, 100, 120);

    self.imageView = [[UIImageView alloc] initWithImage:image highlightedImage:highlightedImage];
    self.imageView.center = self.center;
    self.imageView.frame = CGRectMake(10, 0, HS_BUTTON_IMAGE_WIDTH, HS_BUTTON_IMAGE_HEIGHT);
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    self.imageView.highlighted = NO;
    [self addSubview:self.imageView];

    self.title = [[UILabel alloc] initWithFrame:CGRectMake(0, HS_BUTTON_IMAGE_HEIGHT, HS_BUTTON_IMAGE_WIDTH + 20, 30)];
    self.title.text = aTitle;
    self.title.textAlignment = UITextAlignmentCenter;
    self.title.textColor = [UIColor whiteColor];
    self.title.backgroundColor = [UIColor clearColor];

    [self addSubview:self.title];

    // This creates a transparent button over the view
    UIButton *button  = [UIButton buttonWithType:UIButtonTypeCustom];
    //button.backgroundColor = [UIColor redColor];
    [button setFrame:self.frame];
    [button addTarget:viewController action:actionButton forControlEvents:UIControlEventTouchUpInside];
    [self addSubview: button];
}
return self;}

ViewController では、次のように View を作成します。

m_newsHSButton = [[MBNHomeScreenButton alloc] initWithImage:[UIImage imageNamed:NEWS_SHADED_IMAGE]
                                        andHighlightedImage:[UIImage imageNamed:NEWS_HIGHLIGHTED_IMAGE]
                                                   andTitle:@"News" 
                                               withSelector:@selector(newsButtonPressed)
                                                forDelegate:self];

m_newsHSButton.center = CGPointMake(m_backgroundView.frame.size.width / 4, m_backgroundView.frame.size.height / 4);
[backgroundImgView addSubview:m_newsHSButton];

それでも... newsButtonPressed は呼び出されません。

手伝ってくれますか?ありがとう!

==================== [編集] わかりました... わかりました.. みんなありがとう。最後の行でビューをサブビューとして UIImageView に追加しようとしていたのは事実でした:

[backgroundImgView addSubview:m_newsHSButton];

どうやら、もう触れないらしい。

努力してくれてありがとう!

4

1 に答える 1

0

カスタム ビューでボタンを @property またはインスタンス変数にしてみてください。次に[m_newsHSButton.button addTarget:self action:actionButton forControlEvents:UIControlEventTouchUpInside];、viewController から呼び出します。

于 2012-04-13T20:12:06.683 に答える