iOS - 判断设备类型/第一响应者

在解决品质检测问题时,发现在4s模拟器中键盘会遮挡输入框,通过宏定义根据屏幕宽度判断设备类型,对4或4s设备进行视图上移处理。同时,使用isFirstResponder判断当前第一响应者,当B输入框成为第一响应者时,视图上移以避免键盘遮挡。提供了解决视图上移和下移的相应方法。

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

加班解决本周五品质检测的问题中,遇到这样一个问题,当我用4s模拟器跑的时候,键盘会挡住我的输入框,所以相应处理是要把view上移,但是其他设备,比如(5s/6s)屏幕比较大的设备,就不会被遮挡住输入框,此时不用理会,要解决的仅仅是4或4s设备。

我在pch文件里,做了相应的宏定义,主要以屏幕宽度来判断:

//判断机型
#define iPhone4s ([UIScreen mainScreen].bounds.size.height == 480 ? YES : NO)
#define iPhone5s ([UIScreen mainScreen].bounds.size.height == 568 ? YES : NO)
#define iPhone6s ([UIScreen mainScreen].bounds.size.height == 667 ? YES : NO)
#define iPhone6plus ([UIScreen mainScreen].bounds.size.height == 736 ? YES : NO)


我在解决问题中,出现了第二个问题,比如我的界面里有A和B两个输入框,当当前是A输入框的时候,键盘不会挡住A输入框,所以屏幕的view不需要上移,但当在B输入框的时候,键盘会挡住,此时就要view上移。

此时我用的是isFirstResponder 判断是否为第一响应者的方法。

假设B输入框为第一响应者,那么就view上移,附上我两个方法:  上移 和 下移

-(void)showKeyBoardMarkViewUp{
    
    
    CGRect rect = self.view.frame;
    rect.origin.y = -145 + 64 ;
    
    [UIView animateWithDuration:0.25 animations:^{
        
        self.view.frame = rect;
        
    } completion:nil];
    

    
}


-(void)hideKeyBoardMarkViewDown{
    
    //失去所有第一响应,键盘下移
    [self.view endEditing:YES];
    
    CGRect rect = self.view.frame;
    rect.origin.y = 64;
    
    [UIView animateWithDuration:0.2 animations:^{
        
        self.view.frame = rect;
        
    } completion:nil];
    
}



再附上,系统监听键盘的显示和隐藏的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardShow) name:UIKeyboardWillShowNotification object:nil];
        
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardHide) name:UIKeyboardWillHideNotification object:nil];




本周分享内容比较简单,哈哈。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值