Я пытаюсь добавить кнопку в 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];
По-видимому, он не будет получать больше прикосновений.
Спасибо за усилия, ребята!
Можете ли вы показать свой метод newsButtonPressed? Я просто попробовал свой код с простым проектом ViewController, и он работает нормально. Можете ли вы подтвердить, что он имеет правильную подпись: - (void) newsButtonPressed. –
Есть много возможностей, посмотрите [этот вопрос/ответ] (http://stackoverflow.com/q/1731377/154803). Также мне кажется, что что-либо прозрачное (<0,1 альфа) не получает касаний, передаваемых ему, поэтому вместо прозрачного try '[UIColor colorWithWhite: 0.5 alpha: 0.11]' – progrmr
Каково значение 'viewController', когда вы делаете' addTarget '? Может быть вам нужно использовать 'self.viewController'? –