Кнопка не активируется после добавления в качестве подпредставления в UIView - PullRequest
3 голосов
/ 26 октября 2011

Я создал класс с именем UICustomButton, который является подклассом UIView.Я добавил UIButton к UIView как subview, как показано в моем коде ниже:

-(id)initWithButtonType:(NSString *)type
{
    self = [super init];
    if (self) 
    {
        self.customButton = [self setupButtonWithTitle:type andFrame:frame];
        [self addSubview:self.customButton];
        self.customButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];

    }
    return self;
}

Проблема, с которой я сталкиваюсь, заключается в том, что хотя кнопка появляется, она не активна.Что-то не так с тем, как я добавляю кнопки к UIView?

enter image description here

РЕДАКТИРОВАТЬ: чтобы добавить, я использую этот экземпляр класса пользовательских кнопок в ячейке:

UICustomButton *customButton = [[UICustomButton alloc]initWithFrame:someFrame];
[cell.contentView addSubView:customButton];

Ответы [ 6 ]

8 голосов
/ 26 октября 2011

проверьте фрейм вашего UICustomButton объекта, и если self.customButton находится вне его superView.

2 голосов
/ 27 июня 2015

Убедитесь, что кадр подпредставления находится в рамках его суперпредставления.Я сталкивался с проблемой дважды, и оба раза рамка подпредставления была неправильной.

0 голосов
/ 08 августа 2016

Ваш внешний вид, вероятно, имеет высоту 0. Добавьте ограничения, которые делают его такой же высоты, что и (или выше) подвидов, или создайте его с достаточно большим фреймом.

0 голосов
/ 29 июля 2014

Моя кнопка не работала, потому что у меня было два просмотра друг в друге. Первый вид, как вы можете видеть, имеет ширину и высоту 0 пикселей. Я сделал этот вид того же размера, что и view2, и тогда моя кнопка была кликабельной.

    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(325, 346, 0, 0)];
    view1.alpha = 0.90;

    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 450, 150)];
    [view2.layer setCornerRadius:10.0f];
    view2.backgroundColor = [UIColor whiteColor];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [btn addTarget:self action:@selector(addClosedToCollection) forControlEvents:UIControlEventTouchUpInside];
    [btn setFrame:CGRectMake(30, 30, 300, 32)];
    [btn setTitle:@"i'm a button" forState:UIControlStateNormal];

    [view2 addSubview:btn];
    [view1 addSubview:view2];

Я надеюсь, что помог кому-то :)

0 голосов
/ 26 октября 2011

Вы должны проверить, включены ли все свойства userInteractionEnabled:

  1. Проверьте это свойство для UITableView, где отображаются ваши ячейки с этим представлением
  2. Проверьте это свойство для UITableViewCell где вы добавляете это представление как подпредставление
  3. Проверьте это свойство для UICustomButton
  4. Проверьте это свойство для customButton в -(id)initWithButtonType:(NSString *)type
0 голосов
/ 26 октября 2011

попробуйте поставить это после оператора if:

self.isTouchEnabled = YES;
...