2013-05-10 65 views
1

我有我的UI几个uitextfields其中键盘会重叠很少,它们在我的屏幕底部的uitextfields的,来处理这个我已经实现像如何手动发送UIKeyboard通知

- (void)keyboardWasShown:(NSNotification*)aNotification 
- (void)keyboardWillBeHidden:(NSNotification*)aNotification 

和UIKeyboard通知我uitextfields keyboard returnKeyType is UIReturnKeyNext因此,当用户点击下一个按钮时,我正在将我的下一个文本框设为becomeFirstResponder但是,当键盘隐藏的文本字段成为第一响应者时,其框架不会更改并更新到可见区域边界因为通知只触发fo,所以在uikeyboard之外当我点击一个文本框时,第一次。 我需要在每个becomeFirstResponder事件中触发此keyboardWasShown方法。 提前感谢任何帮助。

回答

0

我建议使用一个嵌入式替换库TPKeyboardAvoiding,它将处理视图的所有移动。如果,由于屏幕键盘,文本字段将被隐藏。它非常易于使用,而且运作良好。

1

首先确保你在这两种方法中的代码是正确的,并考虑到当你将第一响应者从UITextField更改为另一个时,会有两个通知sendet,一个用于键盘隐藏,另一个用于显示键盘。

我不知道你是怎么处理这个通知,如果你有机会到文本字段,但我成功地实现了只用的UITextFields

-(BOOL)textFieldShouldReturn:(UITextField *)textField委托方法的一些文本的Fileds的scrolling行为(移动内容了,因为键盘是隐藏的)

-(void)textFieldDidBeginEditing:(UITextField *)textField(移动内容,因为键盘会出现)

使用这种方法,你可以处理内容的运动,即使你的文本字段已设置为inputView其他视图像UIPickerView。

+0

更改视图的框架与键盘的框架 – 2013-05-10 12:17:15

0

这是我如何实现我的代码:

1)我的看法是一个UIScrollView。

2)我在我的视图中有多个UITextField,并使用标签ID来区分它们。当用户点击一个的UITextField,该委托被称为移动的UIScrollView:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 

switch (textField.tag) 
{ 
    case 0: 
     [myScrollView setContentOffset:CGPointMake(0, 18) animated:YES]; 
     break; 
    case 1: 
     [myScrollView setContentOffset:CGPointMake(0, 56) animated:YES]; 
     break; 
    case 2: 
     [myScrollView setContentOffset:CGPointMake(0, 94) animated:YES]; 
     break; 
    case 3: 
     [myScrollView setContentOffset:CGPointMake(0, 132) animated:YES]; 
     break; 
    case 4: 
     [myScrollView setContentOffset:CGPointMake(0, 170) animated:YES]; 
     break; 
    case 5: 
     [myScrollView setContentOffset:CGPointMake(0, 208) animated:YES]; 
     break; 
    case 6: 
     [myScrollView setContentOffset:CGPointMake(0, 246) animated:YES]; 
     break; 
    case 7: 
     [myScrollView setContentOffset:CGPointMake(0, 284) animated:YES]; 
     break; 
    case 8: 
     [myScrollView setContentOffset:CGPointMake(0, 322) animated:YES]; 
     break; 
    default: 
     break; 
} 
return YES; 
} 

3)我也有UITextView的,并使用该委托来达到同样的效果:

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { 

if(textView.tag == 0) 
{ 
    [myScrollView setContentOffset:CGPointMake(0, 360) animated:YES]; 
    // do some stuff... 
} 
if(textView.tag == 1) 
{ 
    [myScrollView setContentOffset:CGPointMake(0, 504) animated:YES]; 
    // do some stuff... 
} 
return YES; 
} 

注意: CGPointMake(0, 123)值取决于您自己的文本字段坐标。