gpt4 book ai didi

iOS UIButton 点击​​不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:34 24 4
gpt4 key购买 nike

我对 iOS UIButton 以编程方式处理点击有问题。

我有一个UIButton:

- (UIButton *)compareButton
{
if (!_compareButton)
{
NSString *title = TITLE;

NSDictionary *attributes = TITLE_ATTRIBUTES;

NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:title attributes:attributes];

_compareButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 20.0f, 100.0f, 44.0f)];

_compareButton.backgroundColor = [UIColor redColor];

[_compareButton setAttributedTitle:attributedTitle forState:UIControlStateNormal];
[_compareButton addTarget:self action:@selector(buttonCompareClicked:) forControlEvents:UIControlEventTouchUpInside];
}

return _compareButton;
}

UIButton 点击应该由方法处理

- (void)buttonCompareClicked:(UIButton *)sender

此外,我还有一个 UIView:

- (UIView *)header
{
if (!_header)
{
UIView *header = [[UIView alloc] init];

header.backgroundColor = [UIColor whiteColor];

[self.view addSubview:header];

_header = header;
}

return _header;
}

我的按钮是一个 View 的 subview :

[self.header addSubview:self.compareButton];

启用所有用户交互:

self.view.userInteractionEnabled = YES;
self.header.userInteractionEnabled = YES;
self.compareButton.userInteractionEnabled = YES;

尽管如此,按钮点击不会触发方法调用。

这可能哪里有问题?

最佳答案

我认为问题出在 self.header 上。您需要为其设置框架。

self.header.frame = CGRectMake(0, 0, 320, 80);

在此之后,您的按钮应该开始注册触摸。

为什么?

好问题。

由于您 self.header 的层具有属性 maskToBounds,默认设置为 no,因此您在 header 中添加的任何 View View 将可见。但是由于您的 header View 没有可以点击的区域,这使得任何 subviews 都无法点击。这就是您的按钮未注册触摸的原因。

关于iOS UIButton 点击​​不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30323894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com