Как создать этот подвижный UItextfield? - PullRequest
0 голосов
/ 24 марта 2012

Как создать то подвижное поле UItext, которое остается в нижней части экрана, и когда клавиатура появляется, она перемещается в верхнюю часть клавиатуры в приложениях для iphone?Как это сделать в Xcode 4.2?Так же, как в чате WhatsApp и Skype.Я хочу использовать для ввода строки в таблицу.

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Вы должны зарегистрировать viewController в качестве прослушивателя для уведомлений клавиатуры. Когда появляется клавиатура, выдается уведомление со словарем пользователя. Словарь будет содержать полезную информацию, такую ​​как положения клавиатуры относительно экрана, чтобы использовать ее для анимации фрейма textFields на новую позицию. Проверьте документы:

http://developer.apple.com/library/ios/#DOCUMENTATION/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

В частности, вы хотите уведомлений:

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

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

В большинстве случаев вы захотите добавить их в viewDidLoad. И не забудьте отменить регистрацию для уведомлений (removeObserver :) позже, когда вы это сделаете. Так же, как в viewDidUnload.

0 голосов
/ 24 марта 2012

Вы можете использовать уведомления, как упомянул Хьюберт, или постоянно проверять, является ли UITextField первым респондентом.Если это первый респондент, это означает, что выделено текстовое поле и поле, на которое будет влиять клавиатура.

-(void)viewDidLoad {

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(checkTextField) userInfo:nil repeats:YES];

}

-(void)checkTextField {

    if (textField isFirstResponder) {

        //the text field has been tapped and the keyboard will come up, so animate the text field moving up here


    } else {

        //the text field is not selected, so it should be in its original position

    }

}
...