Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当键盘出现时,如何向上移动底部文本字段?_Ios_Objective C_Iphone - Fatal编程技术网

Ios 当键盘出现时,如何向上移动底部文本字段?

Ios 当键盘出现时,如何向上移动底部文本字段?,ios,objective-c,iphone,Ios,Objective C,Iphone,在我的视图中的字段,当我在第6、7、8次开始输入文本时出现键盘时,我想将我的文本视图向上移动。仅限文本字段。我有一篇博文解释了如何做到这一点: 其要点是为键盘显示和键盘隐藏通知添加通知处理程序。在这些处理程序中,您获得键盘的高度,然后进行一些数学运算,以计算出需要向上移动多少字段,以便键盘不会覆盖它。然后,将视图控制器的视图向上移动,以使字段保持暴露 它比这更复杂,但这都在博客文章中介绍过(其中包括一个键盘技术的工作示例)。有很多选择 我使用TPKeyboardAvoidingScrollVi

在我的视图中的字段,当我在第6、7、8次开始输入文本时出现键盘时,我想将我的文本视图向上移动。仅限文本字段。

我有一篇博文解释了如何做到这一点:

其要点是为键盘显示和键盘隐藏通知添加通知处理程序。在这些处理程序中,您获得键盘的高度,然后进行一些数学运算,以计算出需要向上移动多少字段,以便键盘不会覆盖它。然后,将视图控制器的视图向上移动,以使字段保持暴露


它比这更复杂,但这都在博客文章中介绍过(其中包括一个键盘技术的工作示例)。

有很多选择

我使用TPKeyboardAvoidingScrollView有很长一段时间了。现在,我使用的IQKeyboardManager更简单,更易于集成

是苹果关于键盘操作的官方文件

- (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;
}
若您更改了TextFieldBeginediting方法中的y值(如70、80,…),则应在TextFieldDiEndediting方法中向y添加相同的值


试试这段代码。

我试着为你们解答这个问题,结果我得到了答案

#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设置代理。

在发布问题之前,只需谷歌一下即可。您可以给我发送一个链接吗