#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;
Надеюсь, это поможет … 🙂