2012-04-13 5 views
0

Я пытаюсь добавить кнопку в UIView, чтобы покрыть всю площадь зрения .. как это:добавление кнопки в 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 я создаю вид, как это :

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]; 

По-видимому, он не будет получать больше прикосновений.

Спасибо за усилия, ребята!

+0

Можете ли вы показать свой метод newsButtonPressed? Я просто попробовал свой код с простым проектом ViewController, и он работает нормально. Можете ли вы подтвердить, что он имеет правильную подпись: - (void) newsButtonPressed. –

+0

Есть много возможностей, посмотрите [этот вопрос/ответ] (http://stackoverflow.com/q/1731377/154803). Также мне кажется, что что-либо прозрачное (<0,1 альфа) не получает касаний, передаваемых ему, поэтому вместо прозрачного try '[UIColor colorWithWhite: 0.5 alpha: 0.11]' – progrmr

+0

Каково значение 'viewController', когда вы делаете' addTarget '? Может быть вам нужно использовать 'self.viewController'? –

ответ

0

Попробуйте сделать кнопку переменной @property или экземпляром в пользовательском представлении. Затем вызовите [m_newsHSButton.button addTarget:self action:actionButton forControlEvents:UIControlEventTouchUpInside]; с viewController.

+0

Спасибо! Я пробовал это сейчас ... не работает. – Fervus

Смежные вопросы