.xib文件中视图对象下的按钮/链接未响应

时间:2016-11-01 15:07:09

标签: ios objective-c xcode interface-builder xib

有人可以告诉我为什么我的.xib文件中“许可协议视图”UIView对象下的按钮都没有触发动作吗?似乎Scrollview对象搞乱了这种行为。当按钮直接位于“滚动视图”对象下(而不是“许可协议视图”UIView对象)时,它们可以正常运行。但是,我需要将我的按钮分组在UIViews下,如下面的视图层次结构所示。

以下是视图布局:

enter image description here

这是我的视图层次结构:

enter image description here

这是相应的.m文件:

@interface MYViewController ()
     - (IBAction)licenseAgreementPressed:(id)sender;
     - (IBAction)legalDisclaimerPressed:(id)sender;
     - (IBAction)privacyStatementPressed:(id)sender;

     @property (strong, nonatomic) IBOutlet UIView *licenseAgreementView;
     @property (weak, nonatomic) IBOutlet UIButton *legalDisclaimerButton;
     @property (strong, nonatomic) IBOutlet UIButton *privacyStatementButton;
@end

@implementation MYViewController
- (IBAction)licenseAgreementPressed:(id)sender
{
     NSLog(@"Pressed A");
}

- (IBAction)legalDisclaimerPressed:(id)sender
{
     NSLog(@"Pressed B");
}

- (IBAction)privacyStatementPressed:(id)sender 
{
     NSLog(@"Pressed C");
}
@end

4 个答案:

答案 0 :(得分:0)

确保您已在IBAction(代码)和UIButton(在xib中)之间建立连接,请查看此帖子How do I name and link an IBAction button created in a storyboard

答案 1 :(得分:0)

您是否通过控制拖动将操作连接到界面构建器中的元素? 如果您的操作已连接,您将在编辑器的左侧看到一个小圆圈。 circles 有关如何将故事板元素与代码相关联的详细信息,请查看this tutorial

答案 2 :(得分:0)

这是因为在许可协议视图的边界内没有任何按钮。超级视图范围之外的按钮是不可用的。

答案 3 :(得分:0)

所以问题是链接,按钮和文本字段实际上并不位于父视图指定的边界内,因为原始.xib文件没有固定到这些元素的必需约束。我通过选中Attributes Inspector窗格中的“clip to bounds”复选框来发现这一点。每当检查“剪辑到边界”时,应用程序不显示任何上述视图对象;当“剪切到边界”未被选中时,我只能看到链接,按钮和文本字段,但不幸的是,那些元素在那时不可点击。但是,在设置必要的约束之后,视图元素被正确放置在其父视图的边界内,并且文本字段,标签和按钮变为可单击。我附加了用于解决问题的约束。注意:未扩展的约束仅包括高度约束。

enter image description here