键盘退出

键盘退出


遇到的问题是如果我设置了其中任一项参数之后没有关闭键盘,然后直接点击左上角的“back”,就会出现home view先填充满整个view,然后又被navigationnavigationbar挤下来了。为了解决掉这个问题,要么在切换之前把键盘关掉,也得实现点击空白处就能关闭键盘。那么下面就是代码

  1. 切换前关闭键盘
    要切换view,那么原来的view肯定会先调用方法viewWillDisappear,那我们就在调用该方法的时候把键盘关掉,那么切换过去的时候键盘就已经处于关闭状态了。重新实现viewWillDisappear如下:


       

?

1

2

3

4

5

6 -(void)viewWillDisappear:(BOOL)animated{

    [self IsValidToPop];

     

    [super viewWillAppear:animated];

    [self.view endEditing:YES];

}

  其中IsValidToPop是在切换的时候判断当前设置完的参数的有效性,并保存参数到NSUserDefault

  2.  点击空白处关闭键盘

   ViewDidLoad方法中添加如下代码,就可以实现了

?

1

2

3     UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];

    tapGr.cancelsTouchesInView = NO;

    [self.view addGestureRecognizer:tapGr];

 viewTapped是自己定义的方法

?

1

2

3

4

5

6

7 -(void)viewTapped:(UITapGestureRecognizer*)tapGr

{

    [ipText resignFirstResponder];

    [portText resignFirstResponder];

    [bufferText resignFirstResponder];

    [self IsValidToPop];

}

  主要功能就是让当前view里面所有的text窗口都交出第一响应的权限。然后校验参数并保存。







iOS关闭键盘的两种简单方法

2012-11-06 21:56 10495人阅读 评论(1) 收藏 举报

category_icon.jpg

 分类: IOS_TextField2 

arrow_triangle _down.jpg

方法一:


    //1, 关闭键盘

    [[[UIApplication sharedApplication] keyWindow] endEditing:YES];

 

   想必大家都遇到过一个view上好多输入框,为了关闭弹出的软键盘要遍历然后调用resignFirstResponder的吧?今天竟然发现一个关键这个view上可能      打开的键盘很简单:[self.view endEditing:YES];

   直接ok了。

 

方法二:

   //2, 关闭键盘



    [[self findFirstResponderBeneathView:self] resignFirstResponder];

 

[[self findFirstResponderBeneathView:self]  becomeFirstResponder];//打开键盘


- (UIView*)findFirstResponderBeneathView:(UIView*)view 

{

    // Search recursively for first responder

    for ( UIView *childView in view.subviews ) {

        if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) 

            return childView;

        UIView *result = [self findFirstResponderBeneathView:childView];

        if ( result ) 

            return result;

    }

    return nil;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值