字段,当我在6,7,8号开始输入文本时,我想在键盘出现时移动我的文本视图。 text-fields only。
答案 0 :(得分:0)
我有一篇广泛的博客文章解释如何执行此操作:
Shifting views to make room for the keyboard
它的主旨是为键盘添加通知处理程序,键盘将隐藏通知。在这些处理程序中,您可以获得键盘的高度,然后进行一些数学计算,以确定需要多少移动字段,以便键盘不会覆盖它。然后,您可以将视图控制器的视图移动到足以使字段暴露的位置。
它变得比这更复杂,但这些都包含在博客文章中(它是a larger blog post on animating random shapes的一部分,其中包括键盘技术的工作示例。)
答案 1 :(得分:0)
答案 2 :(得分:0)
here是Apple关于处理键盘的官方文档。
答案 3 :(得分: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;
}
如果你在textFieldShouldBeginEditing方法中更改y值(如70,80,...),并在textFieldDidEndEditing方法中为y添加相同的值。
试试这段代码。
答案 4 :(得分: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;
}
从我上面的回答中我将textField标记从1设置为8.它完全符合您的要求。请为textField设置委托。