Iphone在ScrollView下点击TextField使文本筐不被键盘遮住
2012-03-10 14:07
288 查看
今天星期六,一觉睡到十一点,本来还想睡的,想起还要写博客,就起来了,唉,好不容易老天不下雨,下午还打算去打球,好吧加油,这是第二篇了。
废话不多说,新建项目就不多说了,直接从编辑xib文件说起:
1.拖一个Scroll View视图填充View窗口,将Scroll View视图拖大一些,使其超出屏幕。
2.向Scroll View拖(添加)多个Label视图和Text View视图。
3.在.h头文件中添加如下代码:
4.在Interface Builer中,将每个Text Field的delegate连接到File‘s Owner。这一步很重要,因为它使得文本筐的各种事件如:textFieldDidBeginEditing。textFieldDidEndEditing等可被试图控制器处理。
5.在viewDidLoad方法里面修改ScrollView的内容大小:
6.在View窗口显示以前注册两个通知,这两个通知可以告诉你键盘何时显示或消失,在viewWillAppear方法里面注册:
7.上面的通知中,当键盘弹起的时候会调用keyboardDidShow方法,当键盘消失会调用keyboardDidHide方法,这两个方法定义如下:
8.重写TextField的三个事件方法:
当点击TextField视图时会促发如下方法:这个方法会将当前点击的文本筐赋值给currentTextField成员变量
上一个方法中的resignFirstResponder会隐藏键盘,这样会促发另外一个方法:这里将currentTextField设为nil
9.最后不要忘了在View窗口关闭之前移除前面注册的通知:
生命在于运动,先去打球,晚上回来在继续,哈哈。
废话不多说,新建项目就不多说了,直接从编辑xib文件说起:
1.拖一个Scroll View视图填充View窗口,将Scroll View视图拖大一些,使其超出屏幕。
2.向Scroll View拖(添加)多个Label视图和Text View视图。
3.在.h头文件中添加如下代码:
#import <UIKit/UIKit.h> @interface ShowTextFiled : UIViewController { IBOutlet UIScrollView *myscrollview; UITextField * currentTextfield;//当前的文本筐 BOOL keyboardIsShown; } @property (nonatomic,retain)UIScrollView *myscrollview; @end
4.在Interface Builer中,将每个Text Field的delegate连接到File‘s Owner。这一步很重要,因为它使得文本筐的各种事件如:textFieldDidBeginEditing。textFieldDidEndEditing等可被试图控制器处理。
5.在viewDidLoad方法里面修改ScrollView的内容大小:
- (void)viewDidLoad { //下面这两句话必须写,否则scrollview不可以动 myscrollview.frame = CGRectMake(0, 0, 320, 460); [myscrollview setContentSize:CGSizeMake(320,651 )]; [super viewDidLoad]; // Do any additional setup after loading the view from its nib. }
6.在View窗口显示以前注册两个通知,这两个通知可以告诉你键盘何时显示或消失,在viewWillAppear方法里面注册:
//页面加载前调用的方法,注册两个通知:一个是键盘弹出来的通知,另外一个是键盘隐藏的通知,不同的通知调用不同的方法进行处理 -(void) viewWillAppear:(BOOL)animated{ //键盘弹起的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:self.view.window]; //键盘隐藏的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; }
7.上面的通知中,当键盘弹起的时候会调用keyboardDidShow方法,当键盘消失会调用keyboardDidHide方法,这两个方法定义如下:
//键盘弹起后处理scrollView的高度使得textfield可见 -(void)keyboardDidShow:(NSNotification *)notification{ if (keyboardIsShown) { return; } NSDictionary * info = [notification userInfo]; NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; CGRect keyboardRect = [self.view convertRect:[avalue CGRectValue] fromView:nil]; CGRect viewFrame = [myscrollview frame]; viewFrame.size.height -= keyboardRect.size.height; myscrollview.frame = viewFrame; CGRect textFieldRect = [currentTextfield frame]; [myscrollview scrollRectToVisible:textFieldRect animated:YES]; keyboardIsShown = YES; }
//键盘隐藏后处理scrollview的高度,使其还原为本来的高度 -(void)keyboardDidHide:(NSNotification *)notification{ NSDictionary *info = [notification userInfo]; NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; CGRect keyboardRect = [self.view convertRect:[avalue CGRectValue] fromView:nil]; CGRect viewFrame = [myscrollview frame]; viewFrame.size.height += keyboardRect.size.height; myscrollview.frame = viewFrame; keyboardIsShown = NO; }
8.重写TextField的三个事件方法:
当点击TextField视图时会促发如下方法:这个方法会将当前点击的文本筐赋值给currentTextField成员变量
-(void)textFieldDidBeginEditing:(UITextField *)textFieldView{ currentTextfield = textFieldView; }当用户点击键盘中的Return键时,会促发如下方法:
-(BOOL)textFieldShouldReturn:(UITextField *)textFieldView{ [textFieldView resignFirstResponder]; return NO; }
上一个方法中的resignFirstResponder会隐藏键盘,这样会促发另外一个方法:这里将currentTextField设为nil
-(void)textFieldDidEndEditing:(UITextField *)textFieldView{ currentTextfield = nil; }
9.最后不要忘了在View窗口关闭之前移除前面注册的通知:
//页面消失前取消通知 -(void)viewWillDisappear:(BOOL)animated{ [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil]; }
生命在于运动,先去打球,晚上回来在继续,哈哈。
相关文章推荐
- Iphone在ScrollView下点击TextField使文本筐不被键盘遮住
- Iphone在ScrollView下点击TextField使文本筐不被键盘遮住
- 点击某个TextField无法收回所有TextField的键盘,比较特殊(点击的是文本框,而不是done)--iOS 开发
- iOS TextField输入框点击键盘时随着键盘上移
- 点击textField,监听键盘事件实现页面上移
- iOS 让scrollView 上面的textField消退键盘
- iOS TextField输入框点击键盘时随着键盘上移
- iOS中textView和textField键盘的return键点击事件
- 在tableView中监听cell上textField的点击和键盘通知
- iOS模拟器,点击textfield为什么不弹出软键盘
- iphone-使用TextField及关闭键盘(useing TextField for inputs、using the keyboard)
- IPhone手机页面中点击文本输入框,弹出键盘,网页会放大,如何解决
- 1怎样让输入的text文本填写的部分只添加数字、2怎样将输入的数字一次性全部删除 3怎样选择密码 让它不显示 4 怎样实现在没有return的情况下点击button的情况下就能够使键盘页面下落5 怎样实现点击指定的button来对使指定的text进行键盘弹出 6怎样改变button按钮的状态
- ios 自定义cell中有textField,点击textField时,防止键盘挡住textField
- UITextField点击textField外任意区域键盘回收(一)---- [UIAppllication shareApplication]
- ScrollView里面的EditText的点击空白处键盘消失的问题
- iOS模拟器,点击textfield为什么不弹出软键盘
- 点击键盘的next按钮,在不同的textField之间换行
- UITextField点击textField外任意区域键盘回收(二)---- TouchesBegan