iPhone - кнопка UI, вложенная в UIView, не реагирует на прикосновения после анимации этого представления - PullRequest
6 голосов
/ 27 октября 2011

У меня есть UIView (вид B) с кнопкой UIB.

Я добавляю этот вид B в мой основной вид (вид A) в области за пределами основного вида, и затем я оживляю его с помощью анимации UIView.

После того, как анимация UIView завершена и View B теперь находится над View A, поэтому кнопка видна, кнопка не реагирует на прикосновения ... Я никогда не видел этого раньше, но это первое приложениеЯ делаю с новой iOS (iOS 5).Есть идеи?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 27 октября 2011

Это ситуация, которую вы описываете? Потому что, кажется, работает нормально. Вы проверяли, установлено ли для userInteractionEnabled значение YES в UIView?

- (void)buttonPressed:(UIButton*)button
{
    NSLog(@"button pressed");
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, -100, 100, 100)];
    view.backgroundColor = [UIColor blackColor];

    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"Button" forState:UIControlStateNormal];
    button.frame = CGRectMake(0, 10, 100, 20);
    [view addSubview:button];

    [self.view addSubview:view];

    [UIView animateWithDuration:0.5 animations:^{
        view.transform = CGAffineTransformMakeTranslation(0, 100);
    }];

    [view release];
}
1 голос
/ 11 июня 2013

Я не уверен, что на этот вопрос ответили, поэтому я попробую, просто для записи:

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

Я обнаружил, что кнопка, расположенная снаружи, может не работать. Если подумать, это странно. Я столкнулся с этим, когда я делал вид с кнопками, которые оживляют снизу. Под этим у меня есть серый сенсорный вид, чтобы разрешить отмену. Единственная проблема заключалась в том, что 1) для серой области я использовал сам родительский вид и 2) я позволил этой серой области сжаться, когда подпредставление анимировалось на месте ... так что в результате кнопки стали снаружи, и это не сработало .

Решение состояло в том, чтобы оставить изображение в полном размере и либо добавить другое в качестве серого, либо сделать первое серым, а не усеченным (единственная причина, по которой я хотел этого избежать, заключалась в том, что он мог создать кучу полупрозрачных слоев, не оптимально). Тогда вид с кнопками сверху этого. :)

Надеюсь, это поможет.

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

Если вы создали кнопку с помощью программирования, то вам нужно сделать: -

myButton.userInteractionEnabled =YES;

Надеюсь, это поможет ...

...