当有多个UITextField的时候,一个比较好的处理方式就是实现视图移位,实现的方法也很简单。
首先是加入UITextField的代理UITextFieldDelegate。
其次,在代理的-(void) textFieldDidBeginEditing:(UITextField *)textField
方法中实现
1 2 3 4 5 6 7 8
| CGFloat keyboardHeight = 216.0; if ((textField.frame.origin.y + keyboardHeight + textField.frame.size.height) >= ([[UIScreen mainScreen] bounds].size.height - 100.0)) { CGRect frame = CGRectMake(0.0, 0.0, 320, [[UIScreen mainScreen] bounds].size.height + 120.0); frame.origin.y -= textField.frame.origin.y + keyboardHeight + textField.frame.size.height - [[UIScreen mainScreen] bounds].size.height + 120.0; _scrollView.frame=frame; }
|
这里面的具体位置可以自己调整,算法也是不唯一的
当到达最后一个UITextField的时候,要隐藏键盘,这里如何做呢,如下所示:
在代理
- (BOOL)textFieldShouldReturn:(UITextField *)textField
方法中
最后一个失去焦点的时候
1 2 3 4 5 6
| [_bloodTextField resignFirstResponder]; CGRect frame = _scrollView.frame; frame.size.height = [[UIScreen mainScreen] bounds].size.height; frame.origin.y = 0.0; _scrollView.frame=frame; return YES;
|
判断的话我使用这样子实现的
1
| if ([_bloodTextField isFirstResponder])
|
是不是很简单