Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIControlEventTouchDown的ui按钮,赢得图像';在抬起手指之前,不要更改为“选定”_Ios_Objective C_Uibutton - Fatal编程技术网

Ios UIControlEventTouchDown的ui按钮,赢得图像';在抬起手指之前,不要更改为“选定”

Ios UIControlEventTouchDown的ui按钮,赢得图像';在抬起手指之前,不要更改为“选定”,ios,objective-c,uibutton,Ios,Objective C,Uibutton,试着让我的头脑清醒过来。我有一个UIControlEventTouchDown事件的UIButton,它调用: - (IBAction)pressButton:(id)sender { NSLog(@"button pressed"); UIButton *button = (UIButton *)sender; button.selected = YES; } 我得到的信息“按钮按下”立即如预期。但是,在我抬起手指之前,图像不会更改为选定的图像。这没有意义,因为我

试着让我的头脑清醒过来。我有一个UIControlEventTouchDown事件的UIButton,它调用:

- (IBAction)pressButton:(id)sender {

    NSLog(@"button pressed");

    UIButton *button = (UIButton *)sender;
    button.selected = YES;
}

我得到的信息“按钮按下”立即如预期。但是,在我抬起手指之前,图像不会更改为选定的图像。这没有意义,因为我一按下按钮就将按钮设置为“已选择”。我在界面生成器中将我的关闭图像设置为“默认”,将我的打开图像设置为“选定”。我也尝试过为“突出显示”添加一个图像,但这也不起作用。我做错了什么?

您可以为按钮设置突出显示的
图像。在故事板中,它是这样的:

试试这个

- (IBAction)pressButton:(id)sender {
NSLog(@"button pressed");
UIButton *button = (UIButton *)sender;
button.selected = YES;
[button setBackgroundImage:[UIImage imageNamed:@"another.png"] forState:UIControlStateNormal];
}

您已经在
UIControlEventTouchDown
上设置了按钮单击事件,因此该事件将在按钮的触地事件时触发,并且您希望在该事件上设置图像,因此您必须设置图像的
UIControlState

所以,试着这样设置图像:

[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateSelected | UIControlStateHighlighted];

这可能会对您有所帮助。

可能这不起作用,因为您在
UIControlEventTouchDown
事件中手动设置按钮时,有点破坏了按钮状态?尝试删除
按钮。选择=是
是!就这样!然而,当我取下手指时,我想保持图像“打开”。我该怎么做?我想我的意思是每次我该如何反转图像?好吧,我做了几次,但我记不清了。。。。我认为您实际上可以将代码保留在iAction中,但不是在
UIControlEventTouchUpInside
上触发此操作,而是使用
UIControlEventTouchUpInside
我需要一个触摸事件。[按钮设置需要显示];?尝试了…什么都没有。虽然此代码可以回答问题,但提供有关此代码为什么和/或如何回答问题的其他上下文可以提高其长期价值。