当我点击UIButton时没有发生任何事情
checkbox = [[UIButton alloc] initWithFrame:CGRectMake(73, 324, 15, 15)];
[checkbox setBackgroundImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
[checkbox setBackgroundImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateSelected];
[checkbox addTarget:self action:@selector(autologin) forControlEvents:UIControlEventTouchUpInside];
[self.background addSubview:checkbox];
答案 0 :(得分:2)
你必须创建如下的按钮。
UIButton *checkbox = [UIButton buttonWithType:UIButtonTypeCustom]; // this is important
checkbox.frame = CGRectMake(73, 324, 15, 15)];
[checkbox setBackgroundImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
[checkbox setBackgroundImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateSelected];
[checkbox addTarget:self action:@selector(autologin) forControlEvents:UIControlEventTouchUpInside];
[self.background addSubview:checkbox];
您必须首先使用按钮属性创建按钮,然后给它的框架。
如果仍无效,则self.background addSubview
应为self.view addSubview
。
什么是self.background
?
答案 1 :(得分:0)
检查userInteractionEnabled
媒体资源的background
属性。
但我明白为什么如果休息没问题就没有关于按钮的反馈 - 当按钮触摸时你使用UIControlStateSelected
来设置图像,但你必须使用UIControlStateHighlighted
答案 2 :(得分:0)
你的代码非常好。您需要检查以下内容。
self.checkbox = [[UIButton alloc] initWithFrame:CGRectMake(73, 324, 50, 50)]; [self.checkbox setBackgroundImage:[UIImage imageNamed:@"checkbox1.png"] forState:UIControlStateNormal]; [self.checkbox setBackgroundImage:[UIImage imageNamed:@"checkbox2.png"] forState:UIControlStateSelected]; [self.checkbox addTarget:self action:@selector(autologin) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.checkbox];
从您提供的错误消息中 “
警告:尝试在视图不在窗口层次结构中的<enter_the_den: 0x7fbf1bd4c4e0>
上显示<ViewController: 0x7fbf1bc771c0>
!
我怀疑问题出现在方法 autologin 中的代码中,只是注释方法中的所有代码,只是尝试一个日志,它应该可以工作。
答案 3 :(得分:0)
如果您阅读Apple Documentation for UIButton
并查看标记为创建按钮的标题下,您会发现创建UIButton
的方法是使用buttonWithType:
而不是initWithFrame:
。
返回值
新创建的按钮。
<强>讨论强>
此方法是一种便捷构造函数,用于创建具有特定配置的按钮对象。如果您继承UIButton,则此方法不会返回子类的实例。如果要创建特定子类的实例,则必须直接分配/初始化该按钮。
创建自定义按钮(即UIButtonTypeCustom类型的按钮)时,按钮的框架最初设置为(0,0,0,0)。在将按钮添加到界面之前,应将帧更新为更合适的值。
唯一一次将alloc/init
与UIButton
一起使用的情况是,当您有子类UIButton
时,您的init方法应该实现buttonWithType:
并传入{{ 1}}。
所以改变:
UIButtonTypeCustom
到
checkbox = [[UIButton alloc] initWithFrame:CGRectMake(73, 324, 15, 15)];