`
woodn_z
  • 浏览: 44960 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

iphone 键盘遮盖TextField的解决方法

阅读更多
常常我们在做界面的时候会用到文本框输入,但当把输入文本框放的过于低,就会导致在填写信息的时候弹出的虚拟键盘遮盖输入文本框,导致看不见所输入的信息,这对于用户体验当然很不好,所以我们需要改进这一情况,方法大致就是在点击输入文本框准备输入的时候,使得文本框上移到用户能看见的地方。这方法是网上资料,或许还有别的更好的解决方法,希望大家都能发出来。

比如如下的UIViewController有一个UITextField对象

@interface MyViewController : UIViewController <UITextFieldDelegate>
{
    UITextField *textField;
}



记住这里要加上<UITextFieldDelegate>,使得UITextField对象能用代理方法

当然在viewDidLoad方法中,要设置 textField.delegate = self;这样就能找到自己的代理方法实现

如下的代理方法:

//该方法为点击输入文本框要开始输入是调用的代理方法:就是把view上移到能看见文本框的地方
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    CGFloat keyboardHeight = 216.0f;
    if (self.view.frame.size.height - keyboardHeight <= textField.frame.origin.y + textField.frame.size.height) {
        CGFloat y = textField.frame.origin.y - (self.view.frame.size.height - keyboardHeight - textField.frame.size.height - 5);
        [UIView beginAnimations:@"srcollView" context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationDuration:0.275f];
         self.view.frame = CGRectMake(self.view.frame.origin.x, -y, self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
    }
}

//该方法为点击虚拟键盘Return,要调用的代理方法:隐藏虚拟键盘
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}

//该方法为完成输入后要调用的代理方法:虚拟键盘隐藏后,要恢复到之前的文本框地方
- (void)textFieldDidEndEditing:(UITextField *)textField{
    [UIView beginAnimations:@"srcollView" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.275f];
    self.view.frame = CGRectMake(self.view.frame.origin.x, 0, self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
}

分享到:
评论

相关推荐

    IOS应用源码之让键盘消失textField .zip

    而`textFieldShouldReturn`方法则是关键,当用户按下键盘上的“回车”或“完成”键时,我们调用`textField.resignFirstResponder()`方法,这会让textField失去焦点,从而隐藏键盘。 除了通过代理方法,还可以通过...

    代码实现Lable 、textField创建界面以及键盘的处理

    为TextField添加代理方法,以便在用户点击“Done”键时关闭键盘。 ```swift textField.delegate = self // 实现UITextFieldDelegate协议 extension ViewController: UITextFieldDelegate { func ...

    iOS textField弹出自定义键盘(日期时间、省市、国家)

    本文将深入探讨如何在`textField`中实现弹出自定义键盘,特别是日期时间、省市、国家等特定类型的键盘。我们将主要关注以下几个方面:自定义键盘的基本构建、省市选择键盘的实现、日期时间键盘的创建以及国家选择...

    IOS应用源码——让键盘消失textField.rar

    标题"IOS应用源码——让键盘消失textField.rar"和描述暗示了这是一个关于如何在iOS应用中隐藏键盘的源代码示例。在这个项目中,开发者可能实现了一种机制,当用户点击屏幕其他区域或按下特定按钮时,可以便捷地隐藏...

    IOS应用源码——让键盘消失textField.zip

    这个"IOS应用源码——让键盘消失textField.zip"是一个示例项目,展示了如何在用户点击屏幕其他区域时隐藏键盘,以提供更流畅的用户体验。 首先,我们需要理解UITextField。UITextField是iOS SDK中的一个UI组件,...

    iphone自定义数字键盘

    通过实现`textField(_:shouldChangeCharactersIn:replacementString:)`方法,我们可以控制输入的内容,并将自定义键盘的输入值传递给文本输入框。 三、显示与隐藏键盘 - 显示键盘:在需要使用自定义键盘的地方,...

    ios应用源码之让键盘消失textfield 20181210

    隐藏键盘的方法通常是调用UITextField的`resignFirstResponder`方法,这会使得当前的输入视图失去焦点,从而隐藏键盘。代码示例如下: ```swift func hideKeyboard() { view.endEditing(true) } // 在...

    TextField和键盘上移位置

    为了解决这个问题,开发者通常会实现一种机制,使得`TableView`或`ScrollView`能够自动上移到键盘上方,以便用户能清晰看到正在输入的`TextField`。 在iOS中,我们可以利用`UIKeyboardWillShowNotification`和`...

    iPhone隐藏键盘 教程

    在iOS中,UIResponder类有一个名为`resignFirstResponder`的方法,当调用此方法时,当前的第一响应者(通常是被编辑的文本字段)将会失去焦点,从而隐藏键盘。例如,如果你有一个UITextField实例名为`textField`,你...

    textField的一个简单例子

    在这个"textField的一个简单例子"中,我们将探讨如何实现键盘的点击隐藏,并解决键盘弹出时遮挡`textField`的问题。这个例子可能涉及到`UITableView`的使用,因为通常在列表视图中,`textField`会出现在单元格中。 ...

    自定义输入textfield

    2. **交互行为**:这可以是添加动画效果、更改键盘类型、实现输入验证等。例如,当用户开始输入时,可以添加一个淡入动画,或者限制只能输入数字或特定格式的数据。 3. **扩展功能**:这可能包括添加下拉菜单、日期...

    ios-带有placeholder的TextView和跟随键盘移动的textfield.zip

    在这个项目"ios-带有placeholder的TextView和跟随键盘移动的textfield.zip"中,开发者`fengzhihao123`分享了一个实现自定义功能的例子,主要关注了`UITextField`的placeholder显示和`UITextView`的键盘适配。...

    手工创建TextField

    3. **键盘回调**: 我们可以设置键盘相关的代理方法来处理键盘的显示和隐藏,以及用户输入的响应。`UITextField`遵循`UIControl`和`UITextInput`协议,提供了以下回调方法: - `textFieldShouldBeginEditing(_ ...

    基于TextField的图文混编的组件

    基于TextField的图文混编组件是一种解决方案,它利用了Adobe Flash(ActionScript 3,AS3)中的TextField类来实现这一功能。TextField在Flash中是一个基础的文本显示和编辑控件,它可以处理简单的文本输入,但通过...

    自定义textfield

    在iOS和Android应用开发中,`TextField`(在iOS中称为`UITextField`,在Android中称为`EditText`)是用户输入文本的基本组件。本主题将深入探讨如何自定义`TextField`,以满足特定的设计和功能需求,从而提高用户...

    oc TextField 键盘弹出移动位置

    oc TextField 键盘弹出移动位置 //上移后,textField需要额外高于键盘顶部的距离,默认为0 @property (nonatomic, assign) CGFloat offset; //需要向上移动的view,默认为keyWindow @property (nonatomic, weak) ...

    Java中TextField类.pdf

    `TextField`类提供了几个构造方法来初始化组件,每种方法都有不同的用途: - `TextField()`:创建一个没有初始文本、默认宽度的`TextField`。 - `TextField(int columns)`:创建一个指定列数(显示字符数)的`...

    ExtJs5 去掉textfield边框

    在ExtJs5中,开发人员有时需要自定义UI以满足特定的设计需求,比如去掉`textfield`...这种方法可以灵活地控制`textfield`的外观,以满足各种定制需求。当然,实现过程中应遵循良好的编程实践,保持代码整洁且易于维护。

    ios keywoard自适应textField高度

    这个需求通常出现在我们想要实现键盘弹出时文本框自动调整高度以适应内容,或者在一个布局中包含多个不同输入项的情况。"ios keyword 自适应 textField 高度"这一话题,正是关注如何在故事板(Storyboard)中巧妙地...

    点击textField,屏幕下方自定义UIView随软键盘同时推出和退下

    总之,实现“点击textField,屏幕下方自定义UIView随软键盘同时推出和退下”的功能,需要掌握事件处理、键盘通知、布局管理以及动画技巧。通过这些技术的综合运用,我们可以为用户提供更流畅、更人性化的交互体验。

Global site tag (gtag.js) - Google Analytics