UITextField 键盘弹出问题

2016-05-11  本文已影响348人  拾丨玖

有朋友问了一些关于iPhone键盘的问题, 那么总结一下, 在 iOS 程序中当想要在文本框中输入数据,点击文本框会打开键盘。对于 iPad 程序,其键盘有一个按钮可以用来关闭键盘,但是 iPhone 程序中的键盘却没有这样的按钮,不过我们可以采取一些方法关闭它。例如,我们可以实现按下 Return [Keyboard Type为defult] (有时也是 Done、Research 等)关闭键盘,或更人性化的,轻触背景关闭键盘。

Snip20160511_2.png
Snip20160511_1.png

所谓 First Responder 译为第一响应者,指的就是用户当前正在与之交互的控件,。当用户使用键盘时,First Responder 就是这个键盘,resignFirstResponder 方法,顾名思义,就是放弃 First Responder 。

需要说明的是,[self.textField resignFirstResponder]表示,如果textField有FirstResponder的话就放弃它,我们不用先判断firstField是否有,这条语句完全正确。

如此, 打开键盘之后,在空白区域点击一下,键盘就会向下收起来。
在论坛上也有只写一个backgroundTap 函数,然后将组件的事件和屏幕的事件指向同一个函数。其实这两个方法都是可以用的,但是呢,我更加倾向于使用同一个函数的方法,原因就要牵扯到第二个方面的知识:
解决虚拟键盘挡住UITextField的方法因为屏幕太小的缘故,一个键盘跳出来总是把输入框挡住,所以需要移动屏幕来匹配键盘.

只要在代码中加入这三个文件,然后设置自身delegate就可以实现屏幕的移动,但是这里经常会有屏幕移动后不能返回的问题,这里的解决方案就是

          - (IBAction)backgroundTap:(id)sender
         {
                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;
         }

在backgroundTap函数中添加这些代码,这样屏幕就会返回正常了。

上一篇 下一篇

猜你喜欢

热点阅读