Я пытаюсь добавить UIButton в UIView, но у меня возникают проблемы с тем, чтобы заставить его реагировать на прикосновения.
У меня есть метод, который возвращает UIButtons после того, как я предоставил ему тег:
- (UIButton*)niceSizeButtonWithTag:(int)tag {
UIButton * aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setTag:tag];
[aButton addTarget:self action:@selector(buttonWasTapped:) forControlEvents:UIControlEventTouchUpInside];
CGRect newFrame = aButton.frame;
newFrame.size.width = 44;
newFrame.size.height = 44;
[aButton setFrame:newFrame];
return aButton;
}
Как видите, я создаю новую кнопку и увеличиваю размер.
Я использую это следующим образом:
UIButton * anotherButton = [self niceSizeButtonWithTag:1];
[anotherButton setImage:[UIImage imageNamed:@"image" withExtension:@"png"] forState:UIControlStateNormal];
[anotherButton setCenter:CGPointMake(middleOfView)];
[aView addSubview:anotherButton];
Я создаю много таких кнопок, отсюда и причина метода.
Кнопки всегда создаются и отлично добавляются в подпредставление. Я вижу изображение, и они в правильном положении. Проблема в том, что они реагируют только на прикосновения крошечной полоской.
На этом прикрепленном изображении
альтернативный текст http://web1.twitpic.com/img/107755085-5bffdcb66beb6674d01bb951094b0e55.4c017948-full.png
- Желтый цвет показывает всю рамку кнопки,
- Красный показывает область, которая будет реагировать на прикосновения.
- Серый цвет показывает часть вида, к которому добавлена кнопка.
Если бы кто-нибудь мог пролить свет на то, почему это происходит, это было бы очень полезно.
UPDATE:
Я, вероятно, должен упомянуть, что я пытаюсь добавить эту кнопку в UIView, который является подпредставлением UITableViewCell.
ОБНОВЛЕНИЕ 2:
Добавление его непосредственно в UITableViewCell работает, добавление его в UIView на UITableViewCell вызывает ошибку.
ФИНАЛЬНОЕ ОБНОВЛЕНИЕ
Проблема оказалась в том, что я отправлял представление, содержащее кнопку, в конец подпредставлений на UITableViewCell. Избавление от sendSubviewToBack:
звонка исправило это.