我有一个自定义UIView
,我可以在不同的地方使用整个应用程序。
它基本上是这样的:
@interface BottomBar : UIView
{
UIImageView *imageView;
UILabel *nameLabel;
UIButton *playPauseButton;
}
@end
@implementation BottomBar
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:CGRectMake(0.0, 524.0, 320.0, 44.0)];
if (self) {
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(15.0, 2.0, 40.0, 40.0)];
nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(70.0, 2.0, 180.0, 40.0)];
playPauseButton = [[UIButton alloc] initWithFrame:CGRectMake(265.0, 2.0, 40.0, 40.0)];
[self setBackgroundColor:[UIColor colorWithWhite:0.200 alpha:1.000]];
[imageView setImage:[UIImage imageNamed:@"NowPlaying.png"]];
[nameLabel setFont:[UIFont fontWithName:@"Helvetica Neue UltraLight" size:26.0]];
[nameLabel setShadowColor:[UIColor colorWithWhite:0.000 alpha:0.650]];
[nameLabel setShadowOffset:CGSizeMake(1.0, 2.0)];
[playPauseButton setUserInteractionEnabled:YES];
[playPauseButton setBackgroundImage:[UIImage imageNamed:@"Pause.png"] forState:UIControlStateNormal];
[playPauseButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:imageView];
[self addSubview:nameLabel];
[self addSubview:playPauseButton];
}
return self;
}
@end
我剪切了一些方法,包含buttonPressed:(id)sender
方法,不用担心。但UIButton
不会对事件或任何事件作出回应。它甚至没有突出自己。
我之前通过带有[[[NSBundle mainBundle] loadNibNamed:@"BottomBar" [...]] objectAtIndex:0];
的nib文件进行了初始化,并连接了IBOutlets
(工作正常)和IBAction
s,这显然不起作用。
任何想法如何解决?
编辑:我认为这与此部分更相关,因为看起来我的UIViewController
重叠,虽然它被定义为自由形式并且绝对不重叠。我刚刚将UIWindow
颜色设置为红色进行了测试。
以下是代码:
OverviewViewController *ovc = [[OverviewViewController alloc] init];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:ovc];
[[self window] setRootViewController:nvc];
bottomBar = [[BottomBar alloc] init];
[[self window] addSubview:bottomBar];
[[self window] bringSubviewToFront:bottomBar];
OverviewViewController在xib中定义为320x460,因此我的栏底部应该有44px。
编辑2:不,UIViewController
的大小调整无法正常工作。有什么想法吗?
答案 0 :(得分:0)
确保没有任何视图/标签隐藏您的按钮(即使透明视图也不允许您点击)。还要确保该按钮的边界等于其框架。
答案 1 :(得分:0)
请注意,大部分时间imageView都不允许您单击按钮,对imageView代码进行注释然后尝试..
答案 2 :(得分:0)
您的代码是
playPauseButton = [[UIButton alloc] initWithFrame:CGRectMake(265.0, 2.0, 40.0, 40.0)];
应该是
playPauseButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[playPauseButton setFrame:CGRectMake(265.0, 2.0, 40.0, 40.0)];
问题是您没有在代码中定义所需的UIButton Type
。
答案 3 :(得分:0)
我的UIViewController
与UIView
重叠,因此无法识别点按。