uiscrollview - ios - unity 2020 新機能 - キーボードが存在するときにUITextFieldが編集開始時に上に移動するようにするにはどうしたらいいですか?

Unity インストーラー / ios / objective-c / uitextfield / uikeyboard

キーボードを表示する UITextField を備えた UIView があります。私はそれができるようにする必要があります:

UIScrollView が必要なことはわかっています。私は私のクラス変更しようとした UIView する UIScrollView のが、私はまだ、テキストボックスを上下にスクロールすることができませんでしだ。

キーボードが上下したときに UIScrollView のフレームサイズを変更することで機能します。私は単に使用しています:

キーボードが上下したときに UIScrollView のフレームサイズを変更することで機能します。私は単に使用しています:

-(void)textFieldDidBeginEditing:(UITextField *)textField { 
    //キーボードが表示されます
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
                     scrollView.frame.origin.y, 
scrollView.frame.size.width,
scrollView.frame.size.height - 215 + 50);   //サイズを変更します
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
   //キーボードは非表示になります
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
       scrollView.frame.origin.y, 
     scrollView.frame.size.width,
      scrollView.frame.size.height + 215 - 50); //サイズを変更します
}

24 revs, 14 users 51%



Answer #1
NSDictionary* info = [aNotification userInfo];
CGRect keyPadFrame=[[UIApplication sharedApplication].keyWindow convertRect:[[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] fromView:self.view];
CGSize kbSize =keyPadFrame.size;
CGRect activeRect=[self.view convertRect:activeField.frame fromView:activeField.superview];
CGRect aRect = self.view.bounds;
aRect.size.height -= (kbSize.height);

CGPoint origin =  activeRect.origin;
origin.y -= backScrollView.contentOffset.y;
if (!CGRectContainsPoint(aRect, origin)) {
    CGPoint scrollPoint = CGPointMake(0.0,CGRectGetMaxY(activeRect)-(aRect.size.height));
    [backScrollView setContentOffset:scrollPoint animated:YES];
}
origin.y -= scrollView.contentOffset.y
activeField.frame.origin.y-(aRect.size.height)