`
董瑞龙
  • 浏览: 106886 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

UITextField控件处理键盘弹出时遮住输入框的问题。

    博客分类:
  • ios
阅读更多

原文连接:
http://www.devdiv.com/thread-70159-1-1.html

实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。
只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。
- (void)keyboardWillShow:(NSNotification *)noti
{        
        //键盘输入的界面调整        
        //键盘的高度
        float height = 216.0;                
        CGRect frame = self.view.frame;        
        frame.size = CGSizeMake(frame.size.width, frame.size.height - height);        
        [UIView beginAnimations:@"Curl"context:nil];//动画开始          
        [UIView setAnimationDuration:0.30];           
        [UIView setAnimationDelegate:self];          
        [self.view setFrame:frame];         
        [UIView commitAnimations];         
}


- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{        
    // When the user presses return, take focus away from the text field so that the keyboard is dismissed.        
    NSTimeInterval animationDuration = 0.30f;        
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];        
    [UIView setAnimationDuration:animationDuration];        
    CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);        
    self.view.frame = rect;        
    [UIView commitAnimations];        
    [textField resignFirstResponder];
    return YES;        
}

- (void)textFieldDidBeginEditing:(UITextField *)textField
{        
        CGRect frame = textField.frame;
        int offset = frame.origin.y + 32 - (self.view.frame.size.height - 216.0);//键盘高度216
        NSTimeInterval animationDuration = 0.30f;                
        [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];                
        [UIView setAnimationDuration:animationDuration];
        float width = self.view.frame.size.width;                
        float height = self.view.frame.size.height;        
        if(offset > 0)
        {
                CGRect rect = CGRectMake(0.0f, -offset,width,height);                
                self.view.frame = rect;        
        }        
        [UIView commitAnimations];                
}


另外我自己做了一点修改:
在实际用的时候,键盘消失原来的控件并没有回归都原来的位置,而是上移了20个像素,我估计是因为顶部Bar的原因,只要将22行代码改成如下就可以了:
CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height);    
分享到:
评论
1 楼 geek87 2013-03-03  
谢谢。正要用到

相关推荐

    ios应用源码之点击输入框弹出键盘时,输入框的整个视图向上移动以便用户可以看到输入的内

    当用户点击输入框(UITextField或UITextView)弹出键盘时,有时由于键盘遮挡,输入框会被隐藏在键盘下方,导致用户无法看到正在输入的内容。为了解决这个问题,iOS提供了多种方法来处理键盘弹出时视图的自动调整,以...

    ios-键盘不覆盖UITextField和UITextView输入框.zip

    通过上述方法,我们可以创建一个名为“完美Demo”的应用示例,它演示了如何优雅地处理键盘弹出时输入框被遮挡的问题。这个zip文件中的代码应该包含了实现这些功能的完整示例,开发者可以参考学习并根据自己的项目...

    IOS 解决输入框被键盘遮挡问题

    标题"iOS解决输入框被键盘遮挡问题"直指这一常见痛点,描述指出了解决方案——在键盘弹出时,界面向上移动以确保输入框始终可见。以下将详细阐述如何处理这个问题。 首先,我们需要理解iOS中的键盘管理机制。当用户...

    点击输入框弹出键盘时,输入框的整个视图向上移动以便用户可以看到输入的内容_IOS应用源码.rar

    当用户点击输入框(UITextField或UITextView)以输入内容时,键盘的弹出可能会遮挡输入框,导致用户无法清晰看到正在输入的信息。为了解决这个问题,iOS提供了键盘管理的机制,使得视图能够自动适应键盘的出现,将...

    iOS项目开发键盘弹出遮挡输入框问题解决方案

    iOS项目开发中经常出现键盘弹出遮挡输入框问题,这个问题的处理方法可以分为两部分:文本框输入完整的响应过程和键盘的弹出与收起。 首先,我们需要控制UITextField和UITextView的输入输出,需要借助其对应的代理...

    键盘遮挡输入框 界面多个输入框

    在移动应用开发中,尤其是Android或iOS平台,经常会遇到一个问题:当用户在界面中的一个输入框(EditText在Android,UITextField或UITextView在iOS)中输入时,弹出的虚拟软键盘可能会遮挡到下方的其他输入框或者...

    swift-一句代码解决键盘遮挡输入框问题

    当用户需要在文本输入框(UITextField或UITextView)中输入时,弹出的键盘可能会遮挡到输入框,导致用户体验下降。在Swift中,这个问题可以通过一句巧妙的代码来解决。本教程将详细介绍如何处理这个常见问题。 首先...

    ios-键盘上弹出控件.zip

    综上所述,"ios-键盘上弹出控件.zip"这个压缩包可能包含了关于如何在iOS应用中处理键盘弹出、自定义输入视图以及键盘交互的相关代码示例。通过学习和理解这些知识点,开发者可以构建更符合用户习惯、更高效的输入...

    IOS应用源码——点击输入框弹出键盘时,输入框的整个视图向上移动以便用户可以看到输入的内容.zip

    这个"IOS应用源码——点击输入框弹出键盘时,输入框的整个视图向上移动以便用户可以看到输入的内容"压缩包中的源码,就是专门针对这一场景的解决方案。 首先,我们需要理解苹果提供的Auto Layout和Size Classes机制...

    ios-UITextField输入框随着系统键盘升降自适应调整坐标.zip

    我们在开发app时界面中经常会有输入框,例如用户登陆界面,一般都是UITextField,当我们点击输入框时会弹出系统键盘,这时如果不调整系统输入框,输入框可能会被键盘覆盖,这种用户体验很不友好,所以这时我们应该让...

    IOS应用源码之点击输入框弹出键盘时,输入框的整个视图向上移动以便用户可以看到输入的内容 .rar

    在iOS应用开发中,用户界面的设计与交互是至关重要的,特别是在处理输入框(UITextField或UITextView)时。当用户点击输入框以输入内容时,键盘的弹出可能会遮挡部分屏幕,导致用户无法看到他们正在输入的信息。为了...

    ios-键盘遮挡输入框处理.zip

    在iOS开发中,当用户在含有输入框(UITextField或UITextView)的界面中进行输入时,弹出的键盘经常会遮挡到输入框,这给用户体验带来了不便。标题"ios-键盘遮挡输入框处理.zip"所提及的问题正是针对这种情况,而...

    IOS应用源码Demo-点击输入框弹出键盘时,输入框的整个视图向上移动以便用户可以看到输入的内容-毕设学习.zip

    在iOS应用开发中,经常会遇到一个用户体验上的问题:当用户点击屏幕上的文本输入框(UITextField或UITextView)时,弹出的键盘会遮挡部分视图,导致用户无法看到正在编辑的内容。标题所描述的“IOS应用源码Demo”...

    swift-IQKeyBoardManager解决键盘遮挡住输入框的问题

    当用户需要在UITextField或UITextView中输入信息时,弹出的键盘可能会遮挡住这些元素,导致用户体验下降。`IQKeyboardManager`就是为了解决这个问题而诞生的一个第三方库,尤其在Swift开发中,它是一个广泛使用的...

    ios-自定义弹出视图输入框.zip

    在iOS应用开发中,自定义弹出视图输入框是一种常见的需求,特别是在需要用户输入信息但又不希望完全切换到新界面的情况下。标题"ios-自定义弹出视图输入框.zip"暗示了这个压缩包可能包含了一个实现这种功能的示例...

    ios7隐藏虚拟键盘,解决键盘挡住UITextField问题

    在iOS开发中,特别是在iOS 7及更高版本中,用户界面设计的一个常见问题是虚拟键盘弹出时会遮挡UITextField或UITextView,导致用户无法看到正在输入的文本。本篇文章将详细探讨如何解决这一问题,主要关注如何在iOS 7...

    UITextField

    为`UITextField`设置约束,使其底部距离父视图的安全区域有一定的间距,这样当键盘弹出时,布局系统会自动调整`UITextField`的位置。 总之,通过监听`UITextField`的编辑状态和键盘的通知,我们可以有效地管理和...

    ios-键盘弹出.zip

    当用户需要在文本输入框(如UITextField或UITextView)中输入时,键盘会自动弹出。但有时我们需要自定义键盘的行为,例如,当用户点击屏幕其他区域时,键盘应该自动收起。这可以通过实现UITextField或UITextView的...

Global site tag (gtag.js) - Google Analytics