我正在尝试创建一个从其 normal
切换的按钮状态为 selected
简单地触摸它,反之亦然。但是,我没能成功。这是我的代码:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *button = [UIButton new];
[button setImage:[UIImage imageNamed:@"touch_normal.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"touch_selected.png"] forState:UIControlStateSelected];
button.frame = CGRectMake(138.5, 208.5, 63, 63);
[button addTarget:self action:@selector(touch:) forControlEvents:UIControlEventTouchDown];
button.adjustsImageWhenHighlighted = NO;
[self.view addSubview:button];
}
- (void)touch:(id)sender
{
NSLog(@"Touch");
UIButton *button = sender;
if (button.selected)
button.selected = NO;
else
button.selected = YES;
}
@end
当我点击并按住时,touch
正如预期的那样,方法被触发。但是,按钮的图像仅更改为 touch_selected.png
在我松开手指后。知道可能是什么问题吗?
编辑:我知道什么UIControlStateHighlighted
是,但不是我要找的,因为我希望我的按钮更改为 selected
我触摸它后的状态(但当我仍然用手指按住它时),它应该留在 selected
中。我的手指从屏幕上移开后的状态。
最佳答案
您可能想更改突出显示状态的图像。
您不需要在 touch:
方法中执行任何操作。
只需更改行:
[button setImage:[UIImage imageNamed:@"touch_selected.png"] forState:UIControlStateSelected];
对于:
[button setImage:[UIImage imageNamed:@"touch_selected.png"] forState:UIControlStateHighlighted];
然后当按钮被触摸时图像应该改变。
编辑:
要让按钮在触摸被释放后保持图像,您基本上想要在每次按钮上释放触摸时反转所选状态。 我建议向按钮添加一个目标:
[myButton addTarget:self action:@selector(buttonPushed) forControlEvent:UIControlEventTouchUpInside];
然后在该方法中,反转选定状态:
- (void)buttonPushed
{
[myButton setSelected:!myButton.selected];
}
这应该可以解决问题!
关于ios - 为什么我的 UIButton 的选中状态在我松开手指之前没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21189464/