ios 开发过程中遇到的问题(一)UITabBar隐藏、键盘隐藏、tap手势和UItavleView点击冲突、cell背景色覆盖按钮颜色

本文详细介绍了在iOS开发中遇到的常见问题及其解决方案,包括如何正确隐藏UITabBar避免事件响应问题,键盘遮挡输入框时的处理策略,特别是使用IQKeyboardManager,以及处理UITableView点击事件与背景Tap手势冲突的方法。同时,还解决了Cell背景色覆盖内部按钮颜色的问题,提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、关于UITabBar的隐藏

刚开始一直是使用 [self.tabBarController.tabBar setHidden:NO]; 对tabBar 进行隐藏的,这个代码在一般情况确实能实现隐藏的效果,但是什么情况下会有问题呢?

当控件(比如button)靠近屏幕底部的时候,无法触发事件,这个问题纠结了好久,也请教了许多前辈,后来我也上网差了些资料,终于,找到原因了. 就是tabBar 的隐藏问题导致的.虽然tabBar栏被隐藏了,但在隐藏的区域会成为一片空白区,无法被其他视图使用。这也就是为何button不响应时间的原因了.

解决办法:self.hidesBottomBarWhenPushed = YES; (但是要注意使用的时机,应该在视图push 前就设置隐藏,在pop 前设置为NO)


2、关于键盘遮挡输入框的问题

首先推荐个第三方 IQKeyboardManager

键盘遮挡有三种情况:

  • 输入框在view上面
  • 输入框在UITableView上面
  • 点击输入框键盘不需要出现

    针对第一种情况:

1.自定方法 ,用于移动视图

-(void)moveInputBarWithKeyboardHeight:(float)_CGRectHeight withDuration:(NSTimeInterval)_NSTimeInterval;

2.注册监听

NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];

    [defaultCenter selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

    [defaultCenter addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

3.实现方法

- (void)keyboardWillShow:(NSNotification *)notification {

    NSDictionary *userInfo = [notification userInfo];

    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGRect keyboardRect = [aValue CGRectValue];

    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSTimeInterval animationDuration;

    [animationDurationValue getValue:&animationDuration];

    if(nil==self.myTextView) return;//    self.editTextView 为被键盘遮挡住的控件

    CGRect rect = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值