我知道这是一个非常简单的问题。我到处都在搜索堆栈溢出,并且我总是看到相同的答案。但是它仍然对我不起作用。我是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!");
}
当我点击按钮时,没有任何反应,也没有任何内容输出到控制台。我在这里做错了什么?
最佳答案
问题是您永远不会将按钮添加到视图中。您仅添加图层。处理事件的是按钮视图(而不是图层)。
替换此行:
[previewLayer addSublayer:switchButton.layer];
与类似:
[someView addSubview:switchButton];
someView
应该是您想要向其添加按钮的任何视图的适当引用。