IOS 禁止横屏、键盘的隐藏、键盘出现时上移后面的视图

目录:
1.IOS禁止横屏

2.对键盘的隐藏——点击空白处隐藏、点击return键隐藏、

3.键盘出现时,后面的视图整体上移的方法



1.IOS禁止横屏
在AppDelegate中增加,这个方法可以禁止横屏

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window  
    {  
         return UIInterfaceOrientationMaskPortrait;  
    }


2. 对键盘的隐藏——点击键盘return键隐藏键盘、点击空白处隐藏键盘、

点击键盘return键隐藏键盘
2.1在需要实现的控制器中实现代理<UITextFieldDelegate>
2.2需要使用该功能的UITextField处,委托代理。记住一定是要在实例化之前【这一步很重要】
2.3实现代理方法
#pragma mark TextField代理
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

点击空白处隐藏键盘、
#pragma mark view代理 点击空白区域是触发
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //关闭键盘
    [self.username resignFirstResponder];
    [self.password resignFirstResponder];
}


3.键盘出现时,后面的视图整体上移的方法
- (void)viewDidLoad
{
    //[步骤1/3]获取键盘的监听广播
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillAppear2:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillDisappear2:) name:UIKeyboardWillHideNotification object:nil];
}

#pragma mark 键盘 高度的计算
-(CGFloat)keyboardEndingFrameHeight:(NSDictionary *)userInfo//计算键盘的高度
{
//    传入的(NSDictionary *)userInfo用于存放键盘的各种信息,其中UIKeyboardFrameEndUserInfoKey对应的存放键盘的尺寸信息,以CGRect形式取出
    CGRect keyboardEndingUncorrectedFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue];
    CGRect keyboardEndingFrame = [self.view convertRect:keyboardEndingUncorrectedFrame fromView:nil];
    return keyboardEndingFrame.size.height;
}
#pragma mark [步骤2/3]根据键盘高度将当前视图向上滚动同样高度。
-(void)keyboardWillAppear2:(NSNotification *)notification
{
    CGRect currentFrame = self.view.frame;
   
    if (currentFrame.origin.y < 0)//这里弥补了一个bug:当两个TextField来回切换的时候,软键盘一直都在,所以会重复调用keyboardWillAppear函数,从而导致currentFrame.origin.y = currentFrame.origin.y - keyBoardH * 0.4;执行,而此时的currentFrame只就累加了,所以必须清零
    {
        currentFrame.origin.y = 0;
        self.view.frame = currentFrame;
    }
   
    CGFloat keyBoardH = [self keyboardEndingFrameHeight:[notification userInfo]];
    currentFrame.origin.y = currentFrame.origin.y - keyBoardH * 0.4;
    self.view.frame = currentFrame;
}
#pragma mark [步骤3/3]当键盘消失后,视图需要恢复原状。
-(void)keyboardWillDisappear2:(NSNotification *)notification
{
    CGRect currentFrame = self.view.frame;
    CGFloat keyBoardH = [self keyboardEndingFrameHeight:[notification userInfo]];
    currentFrame.origin.y = currentFrame.origin.y + keyBoardH * 0.4;
    self.view.frame = currentFrame;
   
    //下面if语句的原理和keyboardWillAppear
    if (currentFrame.origin.y < 0)
    {
        currentFrame.origin.y = 0;
        self.view.frame = currentFrame;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值