我知道这是一个非常简单的问题。我到处搜索堆栈溢出,我总能看到相同的答案。但它仍然不适合我。我是Objective-C的新手,请耐心等待。
我正在尝试以编程方式向我的UIButton添加动作。这是在AVCaptureSession中。这是我的代码:
// Create button and add to previewLayer:
UIButton *switchButton = [[UIButton alloc] initWithFrame:CGRectMake((self.view.frame.size.width / 2) - 50, (self.view.frame.size.height - 150), 100, 100)];
[switchButton addTarget:self
action:@selector(switchCameras)
forControlEvents:UIControlEventTouchUpInside];
switchButton.layer.borderColor = [UIColor greenColor].CGColor;
switchButton.layer.borderWidth = 0.5;
switchButton.clipsToBounds = YES;
[previewLayer addSublayer:switchButton.layer];
// Method switchCameras:
- (void)switchCameras {
printf("This is a neat command!");
}
当我点击按钮时,没有任何反应,没有任何内容打印到控制台。我在这做错了什么?
答案 0 :(得分:4)
问题是您从不将按钮添加到视图中。您只需添加图层。它是处理事件的按钮视图(不是图层)。
替换此行:
[previewLayer addSublayer:switchButton.layer];
有类似的东西:
[someView addSubview:switchButton];
someView
应该是您希望添加按钮的任何视图的适当参考。
答案 1 :(得分:2)
我不会给你完整的答案 - 只需要你自己找到答案所需的信息。
UIButton
是UIControl
的子类。在UIIControl中定义了向按钮添加目标/操作的方法。请查看UIControl
上的Xcode文档,并专门查找名称以addTarget
开头的方法。
如果您无法弄明白,请回复一下您遇到问题的后续问题。
addTarget:action:
。我应该更仔细地查看你的代码。
看起来问题是你要添加按钮的图层,而不是按钮。不要这样做。将按钮添加为相应容器视图的子视图。图层不会处理目标/操作。