我有一个视图控制器类(子类),它继承自视图控制器类(父类)。在父类的loadView()方法中,我创建了一个名为myButtonView的子视图,其中包含两个按钮(水平布局在子视图中),并将其添加到主视图中。在子类中,我需要将这两个按钮上移50像素。
因此,我通过调用setFrame方法来移动buttonView。这使按钮移动并正确地呈现,但在此之后它们不响应触摸事件。在父类类型的视图中,按钮可以正常工作。在子类类型的视图中,如果我注释掉setFrame()调用,按钮也可以正常工作。
如何移动这些按钮并使它们仍然响应触摸事件?
感谢任何帮助。
以下是代码片段。
在父类中:
在子类中:
因此,我通过调用setFrame方法来移动buttonView。这使按钮移动并正确地呈现,但在此之后它们不响应触摸事件。在父类类型的视图中,按钮可以正常工作。在子类类型的视图中,如果我注释掉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 ..
}