我有一个横幅,我需要在标签栏控制器的标签栏下面显示。让它显示并不是困难的部分,我已经解决了,但是我似乎在某种程度上使用的方法似乎是将它放在正常区域之外以便接收输入。
基本上,我使用此横幅作为广告,但我不希望它覆盖标签栏。
以下是我用于在标签栏下方创建横幅的代码:
const float footerHeight = 34.5;
const float statusBarHeight = 20.f;
const float viewHeight = 480 - statusBarHeight - bannerHeight - footerHeight;
const float viewY = 0 + statusBarHeight + bannerHeight;
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, viewHeight, 320, footerHeight)];
[footerView setContentMode:UIViewContentModeScaleToFill];
[footerView addSubview:footerButton];
[self.tabBarController.view addSubview:footerView];
[footerView release];
self.tabBarController.view.frame = CGRectMake(0, viewY, 320, viewHeight);
仅供一些变量参考,在视图顶部也有一个标题。 footerButton
是我在IB中创建并连接的UIButton。
答案 0 :(得分:1)
我最终通过在UITapGestureRecognizer
对象上放置UIWindow
然后手动执行rect cheecks以查看它是否在tabBarController的正常较小范围内来解决此问题。将输入转发到我的页脚栏,否则
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint touchPoint = [touch locationInView:self.window];
if ( touchPoint.y > 57 && touchPoint.y < 446 )
{
return NO;
}
return YES;
}
-(IBAction) handleTap:(UIGestureRecognizer*)sender
{
if ( sender.state == UIGestureRecognizerStateEnded )
{
//handle
CGPoint tapPoint = [sender locationOfTouch:0 inView:self.window];
if ( tapPoint.y >= 446 )
{
[footerButton clickedAd];
}
NSLog(@"(%f,%f)", tapPoint.x, tapPoint.y );
}
}