У меня есть класс контроллера представления (дочерний), который расширяется от класса контроллера представления (родительский). В методе loadView () родительского класса я создаю подпредставление (с именем myButtonView) с двумя кнопками (кнопки расположены в подпредставлении горизонтально) и добавляю его в основной вид. В подклассе мне нужно сдвинуть эти две кнопки вверх на 50 пикселей.
Итак, я сдвигаю buttonView, вызывая метод setFrame. Это заставляет кнопки сдвигаться и отображаться правильно, но они не реагируют на сенсорные события после этого. Кнопки работают правильно в представлениях типа родительского класса. Также в представлении типа дочернего класса, если я закомментирую вызов setFrame (), кнопки будут работать правильно.
Как я могу сдвинуть кнопки и заставить их реагировать на сенсорные события?
Любая помощь приветствуется.
Ниже приведены фрагменты кода.
В родительском классе:
- (void)loadView {
// Some code...
CGRect buttonFrameRect = CGRectMake(0,yOffset+1,screenRect.size.width,KButtonViewHeight);
myButtonView = [[UIView alloc]initWithFrame:buttonFrameRect];
myButtonView.backgroundColor = [UIColor clearColor];
[self.view addSubview:myButtonView];
// some code...
CGRect nxtButtonRect = CGRectMake(screenRect.size.width - 110, 5, 100, 40);
myNxtButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myNxtButton setTitle:@"Submit" forState:UIControlStateNormal];
myNxtButton.frame = nxtButtonRect;
myNxtButton.backgroundColor = [UIColor clearColor];
[myNxtButton addTarget:self action:@selector(nextButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[myButtonView addSubview:myNxtButton];
CGRect backButtonRect = CGRectMake(10, 5, 100, 40);
myBackButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myBackButton setTitle:@"Back" forState:UIControlStateNormal];
myBackButton.frame = backButtonRect;
myBackButton.backgroundColor = [UIColor clearColor];
[myBackButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[myButtonView addSubview:myBackButton];
// Some code...
}
В детском классе:
- (void)loadView {
[super loadView];
//Some code ..
CGRect buttonViewRect = myButtonView.frame;
buttonViewRect.origin.y = yOffset; // This is basically original yOffset + 50
[myButtonView setFrame:buttonViewRect];
yOffset += KButtonViewHeight;
// Add some other view below myButtonView ..
}