1. ホーム
  2. objective-c

iOSでキーボードが表示されたらUIViewを上に移動させる

2023-10-27 10:31:08

質問

UIViewを持っていますが、UIScrollViewの中に入っていません。私はキーボードが表示されたときに私のビューを上に移動したいと思います。以前、私はこの解決策を使用しようとしました。 キーボードが表示されたときにUITextFieldを上に移動させるにはどうすればよいですか? .

問題なく動作していました。しかし、テキストフィールドにデータを挿入した後、それは私を別のビューに移動し、私がこのページに戻ったとき、それはちょうどジャンプし、私は私のテキストフィールドを見ることができませんでした。この問題のために何か良い解決策はありますか?

どのように解決するのですか?

キーボードの表示と非表示を切り替えるには、次のコードを使用します。

//Declare a delegate, assign your textField to the delegate and then include these methods

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
    return YES;
}


- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

    [self.view endEditing:YES];
    return YES;
}


- (void)keyboardDidShow:(NSNotification *)notification
{
    // Assign new frame to your view 
    [self.view setFrame:CGRectMake(0,-110,320,460)]; //here taken -110 for example i.e. your view will be scrolled to -110. change its value according to your requirement.

}

-(void)keyboardDidHide:(NSNotification *)notification
{
    [self.view setFrame:CGRectMake(0,0,320,460)];
}