2016-02-14 30 views

回答

0

我试过解决方案,你的问题,我只是得到。

#define kOFFSET_FOR_KEYBOARD 80.0 
@interface ViewController() 
{ 
    NSInteger tagTF; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

-(void)setMovedUp:(BOOL)movedUP 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    CGRect rect = self.view.frame; 
    if(movedUP) 
    { 
    rect.origin.y -= kOFFSET_FOR_KEYBOARD; 
    rect.size.height += kOFFSET_FOR_KEYBOARD; 
    } 
    else{ 
    rect.origin.y += kOFFSET_FOR_KEYBOARD; 
    rect.size.height -= kOFFSET_FOR_KEYBOARD; 
    } 
    self.view.frame = rect; 
    [UIView commitAnimations]; 
} 

#pragma mark - UITextFieldDelegate Methods 

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    tagTF = textField.tag; 
    if(textField.tag>=6) 
    { 
    if(self.view.frame.origin.y >= 0) 
    { 
     [self setMovedUp:YES]; 
    } 
    } 
    return YES; 
} 


-(BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    if(textField.tag>=6) 
    { 
    [self setMovedUp:NO]; 
    } 
    [textField resignFirstResponder]; 
    return YES; 
} 

从我上面的回答我设置文本框的标签从1到8.It完美的作品你want.Please设置文本框的委托。

+0

非常感谢你Ruchira兰达纳它为我工作。 – user5575941

0

我有一个广泛的博客文章,解释如何做到这一点:

Shifting views to make room for the keyboard

它的要点是添加通知处理程序键盘将显示和键盘会隐藏通知。在这些处理程序中,您可以获得键盘的高度,然后进行一些数学计算,以确定您需要将该字段向上移动,以便键盘无法覆盖它。然后,您将视图控制器的视图移到足以保持视野暴露的位置。

它变得复杂多了,但是这涵盖的所有博客文章(这是a larger blog post on animating random shapes包括键盘技术的工作示例部分。)

0

有很多该选项。

我长时间在使用TPKeyboardAvoidingScrollView。现在,我使用IQKeyboardManager更简单,更易于集成。

IQKeyboardManager

0

here是由苹果公司关于处理键盘的官方文档。

0
- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField { 
CGRect frame = self.view.frame; 
Float y = frame.origin.y - 70; 
frame.origin.y = y; 
self.view.frame = frame; 
return YES; 
} 

- (void) textFieldDidEndEditing:(UITextField *)textField{ 
CGRect frame = self.view.frame; 
Float y = frame.origin.y + 70; 
frame.origin.y = y; 
self.view.frame = frame; 
} 

如果有变化的y值(如70,80,......)在textFieldShouldBeginEditing方法,并增加相同的值,在textFieldDidEndEditing方法Y。

试试这个代码。

相关问题