2

私はgpsnoteでプロジェクトをやっています。誰かがこのアプリケーションに関する情報を持っている場合は、私を案内してください...

このコードは知っていますが、テキストフィールドをキーボードと一緒に使用したい

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
}

ありがとう

4

1 に答える 1

0

最初にコンテンツをスクロール ビューに設定し、viewDidLoad でスクロール ビューを設定します。

[scrollView setContentSize : CGSizeMake (320, 1040)];

次に、viewWillAppear で次の通知を追加します。

表示されているキーボードの場合

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWasShown:)
                                             name:UIKeyboardDidShowNotification object:nil];

キーボード隠し用

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillBeHidden:)
                                             name:UIKeyboardWillHideNotification object:nil];

以下は、通知によって呼び出される 2 つの関数です。

- (void)keyboardWasShown:(NSNotification*)aNotification {

NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

double keyboardHeight = kbSize.height;
double screenHeight =   [UIScreen mainScreen].bounds.size.height - 20;

if(textOrigin > screenHeight - keyboardHeight)
{
    double sofset =  textOrigin - (screenHeight - keyboardHeight);
    CGPoint offset = scrollBackGround.contentOffset;
    offset.y += sofset;
    [scrollBackGround setContentOffset:offset animated:YES];
}

}


- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
    [scrollBackGround setContentOffset:CGPointMake(0, 0) animated:YES];
}

keyboardWasShown 関数では、キーボードの高さを取得し、textField の y 軸 (関数内の textOrigin) がキーボードの Y 軸より大きいかどうかを確認し、テキスト フィールドを含むスクロールビューのコンテンツを上にスライドさせます。

NOW テキストフィールドの Y 軸を取得する方法。これには、テキスト フィールド デリゲートを使用する必要があります。テキスト フィールドがファーストレスポンダーになると、次のデリゲートがトリガーされます。

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    textOrigin  =   scrollBackGround.frame.origin.y + textField.frame.origin.y + 20(it is status bar height) + yourNavigationBarheight;

// Make sure to make textOrigin an ivar in your .h file
}

最後に、keyboardWillBeHidden で、スクロールビュー contentview をリセットしています

于 2012-04-21T07:28:12.997 に答える