iPhone — UIButton, вложенный в UIView, не реагирует на касание после анимации этого представления

#iphone #animation #uiview #uibutton

#iPhone #Анимация #uiview #uibutton

Вопрос:

У меня есть UIView (вид B) с UIButton на нем.

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

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

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

Комментарии:

1. Пожалуйста, опубликуйте некоторый код.

2. Сейчас у меня такая же проблема, вы поняли это?

Ответ №1:

Это та ситуация, которую вы описываете? Потому что, похоже, он работает нормально. Вы проверили, установлен ли для 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];
}
  

Ответ №2:

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

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

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

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

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

Ответ №3:

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

 myButton.userInteractionEnabled =YES;
  

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