我試圖創建一個按鈕,只需輕觸它即可從normal
狀態切換到selected
狀態,反之亦然。但是,我沒有設法使其工作。這裏是我的代碼:爲什麼在釋放我的手指之前,我的UIButton的選定狀態沒有被觸發?
#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
狀態。
對不起,非常清楚。看我的編輯。 –
這實際上是我現在正在做的。 :)(除了我在'buttonPushed'方法中使用'if'語句,因爲它是一個學校項目,它使它更具可讀性) –