IOS中解决Keyboard遮盖输入的办法

一般来说,键盘遮挡主要有这么几种情况,一个是遮住UITextView,还有就是遮住UITextField,一 般来说,比较推荐在UIScrollView或者UITableView里加入textfield的控件。但是有时也许难免。

在UITextView中

这个在苹果官方文档中的项目中给出了做法,首先是注册观察者监听 UIKeyboardWillShow和WillHide事件

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];  

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillHide:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];
}

实现自定义的方法

- (void)keyboardWillShow:(NSNotification *)aNotification 

{
    NSDictionary *userInfo = [aNotification userInfo];  

    CGRect keyboardRect = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] 

CGRectValue];
    NSTimeInterval animationDuration = [[userInfo 

objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];  

    CGRect newFrame = self.view.frame;
    newFrame.size.height -= keyboardRect.size.height;  

    [UIView beginAnimations:@"ResizeTextView" context:nil];
    [UIView setAnimationDuration:animationDuration];  

    self.view.frame = newFrame;  

    [UIView commitAnimations];
}

获取键盘显示的信息,然后根据信息对view的frame进行调整,然后WillHide方法就跟上面相 同,只不过把高度新高度改成+= keyboardRect.size.height就可以了,最后,移除观察者:

- 

(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];  

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIKeyboardWillHideNotification
                                                  object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIKeyboardWillShowNotification
                                                  object:nil];
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索uitextview
, object
, uiview
, keyboard
, uitextfield
, ios ui uiview
, uiscrollview
, selector
, nsnotification
, 观察者
, uiscrollview尺寸
, Self
, uiscrollview详解
animated
smart keyboard输入法、input被输入法遮盖、手机输入法遮盖input、appcan 输入法遮盖、输入法弹出遮盖输入框,以便于您获取更多的相关知识。

时间: 2024-09-09 04:45:16

IOS中解决Keyboard遮盖输入的办法的相关文章

iOS中的UITextView文字输入光标使用技巧小结_IOS

1.创建并初始化 @property (nonatomic, strong) UITextView *textView; // 创建 self.textView = [[UITextView alloc] initWithFrame:self.view.frame]; // 设置textview里面的字体颜色 self.textView.textColor = [UIColor blackColor]; // 设置字体名字和字体大小 self.textView.font = [UIFont fo

iOS中解决Xcode 8控制台乱码的方式_IOS

下面是之前大家会用的解决控制台log输出的方式 Xcode8里边 Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加 OS_ACTIVITY_MODE = Disable 环境变量 ,这个相信大家都会. 使用改变Xcode系统模板的方式 先介绍几个c函数 /** *getenv(取得环境变量内容) *定义函数 char * getenv(const char *name); *函数说明 getenv()用来取得参数name环境变

IOS开发中取消文本框输入时的小键盘

  这篇文章主要介绍了IOS开发中取消文本框输入时的小键盘,需要的朋友可以参考下 首先在Interface Builder中选择TextFields,然后在Text Field Attributes中找到Text Input Traits,选择Return Key为done.OK 定义方法 - (IBAction) textFieldDoneEditing:(id)sender; //按下Done键关闭键盘 实现方法 代码如下: //按完Done键以后关闭键盘 - (IBAction) text

sdl2 0-关于sdl在ios中输入拼音的问题

问题描述 关于sdl在ios中输入拼音的问题 做的是ios app,我们现在项目里面用的sdl跨平台,平常开发在windows下,在处理文本输入的时候,英文输入的情况在windows和ios下都没有任何问题,问题出在中文输入上.在windows下,用拼音输入中文时,比如我要输入"发"这个字,输入框中按下f和a字母,并且选定了发这个字的时候会接收到sdl的sdl_textinput事件,里面的字符串也是"发"字,没有任何问题.但是在ios下,同样用拼音输入中文,当我打

ios中键盘遮挡了输入框,在storyboard中怎么解决。

问题描述 ios中键盘遮挡了输入框,在storyboard中怎么解决. 在stroryboard中设计登录界面,账号和密码的输入框,一点击输入键盘就遮挡住了.这个问题怎么解决?知道的请告诉我一下,谢谢了. 解决方案 iOS解决键盘遮挡输入框的问题关于ios键盘遮挡输入框ios键盘不遮挡输入框 解决方案二: 需要添加代码来解决,判断是否弹出了键盘,然后整体移动View视图的位置,直接在stroryboard应该是不能修改 解决方案三: 因为你的输入框太低,只能监听键盘解决,或者用个iqkeyboa

iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容_正则表达式

何谓正则表达式 正则表达式(regular expression),在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成"regex",单数有regexp.regex,复数有regexps.regexes.regexen. 正则表达式组成 正则表达式有两种类型的字符

IOS中手风琴表不能移动的解决方法_IOS

我有一个手风琴的表上的所有设备和浏览器正常工作,但根本不工作在 ios 移动.我找到了解决的办法也仅为 div 的和使用 href,但对我而言,我真的需要用几个列的表.在这里,你有我使用的自举 代码http://jsfiddle.net/k3yrnsux/ . <div class="table-content"> <table id="table-collapse" class="table table-responsive table

iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容

何谓正则表达式 正则表达式(regular expression),在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成"regex",单数有regexp.regex,复数有regexps.regexes.regexen. 正则表达式组成 正则表达式有两种类型的字符

iOS 中的 21 种设计模式

iOS 中的 21 种设计模式 对象创建原型(Prototype) 使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象. 1 2 NSArray *array = [[NSArray alloc] initWithObjects:@1, nil]; NSArray *array2 = array.copy; array 就是原型了,array2 以 array 为原型,通过 copy 操作创建了 array2. 当创建的实例非常复杂且耗时,或者新实例和已存在的实例值相同,使用原型模式