2011-11-03 55 views
6

我定制UIButton编程这里:正在按下UIButton的UIControlState是什么?

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [button setSelected:YES]; 
     button.frame = CGRectMake(x, y, width, height); 
     [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
     [button setTitle:@"Button Title" forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateSelected]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateDisabled]; 

的问题是,如果我按住图像背景图像中消失,直到我放开了它...

回答

8

我觉得你在矫枉过正的模式:)。尝试为UIControlStateNormal设置button.png,为UIControlStateHighlighted设置buttonActive.png。没有必要休息。看看这是否有效。

编辑:

此外,请记住:图像文件的名称是区分

你在设备上测试是否敏感?映像名称对于设备版本是区分大小写的,但不适用于模拟器。例如,如果您的实际图像文件名为buttonactive.png,但您将代码称为buttonActive.png,则它将显示在模拟器上,但不显示在设备上。

请确保两个图像名称的大小写与实际文件的名称相匹配。

编辑#2:

试试这个代码

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setSelected:YES]; 
    button.frame = CGRectMake(x, y, width, height); 
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
    [button setTitle:@"Button Title" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
    [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted]; 
+1

我想补充一点,图像文件的名称是区分上一个敏感设备,但不在模拟器中。这让我挠了脑袋几次:) – Keller

+0

@Sid:我知道**图像名称区分大小写**。我在iPhone模拟器上测试,但应该反应相同... –

+0

@Keller::) ... – Sid

3

图出来,它的工作过程是这样:

[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:UIControlStateSelected]; 
[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:(UIControlStateHighlighted|UIControlStateSelected)]; 
-2

虽然我们从IDE

添加一个按钮样品:

.m文件10

它是

-(IBAction)BtnAdd:(id)sender 
{ 
} 

它是不能启用或禁用的方法。

所以如果你想启用或禁用按钮,使它作为-(IBOutlet)BtnAdd 添加IBOutlet.h文件,并将其连接到特定的按钮 然后BtnAdd.enabled=NO将工作