我有一个带有图像的按钮,当我按下按钮时,我想弹出一个窗口。当按钮为空时,里面没有图像,一切正常,我现在添加了图像,按钮不再起作用。按钮对应于IBAction,并通过IBOutlet连接到XIB。我能做什么?
- (void)viewDidLoad
{
//.....
self.myButton = [UIButton buttonWithType:UIButtonTypeCustom];
if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
self.myButton.frame = CGRectMake(160, 502, 73, 33);
[self.myButton setImage:[UIImage imageNamed:@"iphone_legenda.png"]
forState:UIControlStateNormal];
self.myButton.contentMode = UIViewContentModeScaleToFill;
}else{
self.myButton.frame = CGRectMake(330, 917, 182, 68);
[self.myButton setImage:[UIImage imageNamed:@"ipad_legenda.png"]
forState:UIControlStateNormal];
self.myButton.contentMode = UIViewContentModeScaleToFill;
}
[self.view addSubview:self.myButton];
/*The problem arose in this line, without addSubview the image you could not see
but the button worked, added addSuview the image you see but the button does not
work anymore*/
NSLog(@"The button is %@", self.myButton);
/*The button is <UIButton: 0x80f1e90; frame = (330 917; 182 68); opaque = NO;
layer = <CALayer: 0x80f1210>>*/
//.......
}
-(IBAction)pressedButton:(id)sender{
//This method initially worked
}
最佳答案
如果XIB中已经定义了按钮,则您的代码将创建另一个不带任何事件(IBAction)的独特按钮。
您可以将代码更改为:
- (void)viewDidLoad
{
//.....
if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
self.myButton.frame = CGRectMake(160, 502, 73, 33);
[self.myButton setImage:[UIImage imageNamed:@"iphone_legenda.png"]
forState:UIControlStateNormal];
self.myButton.contentMode = UIViewContentModeScaleToFill;
}else{
self.myButton.frame = CGRectMake(330, 917, 182, 68);
[self.myButton setImage:[UIImage imageNamed:@"ipad_legenda.png"]
forState:UIControlStateNormal];
self.myButton.contentMode = UIViewContentModeScaleToFill;
}
}
另一种选择是拥有两个XIB。一个用于iPad,另一个用于iPhone。
关于ios - 添加图像后,UIButtonTypeCustom不再起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13344675/