Я полный новичок в Qbjectives-C.Как нажимать содержимое вверх, когда появляется клавиатура?
Я видел, что этот вопрос задавали раньше, но я не совсем понял его из ответов, представленных там.
Я полный новичок в Qbjectives-C.Как нажимать содержимое вверх, когда появляется клавиатура?
Я видел, что этот вопрос задавали раньше, но я не совсем понял его из ответов, представленных там.
Вам нужно добавить уведомления, чтобы поймать статус клавиатуры. В уведомлении вы можете захватить размер клавиатуры и переместить представление в соответствии с размером клавиатуры.
#define kKeyboardAnimationDuration 0.3
@interface YourViewController:UIViewController
{
BOOL keyboardIsShown;
}
И тогда в вашей реализации
- (void)viewDidLoad
{
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:self.view.window];
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:self.view.window];
keyboardIsShown = NO;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
// unregister for keyboard notifications while not visible.
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
// unregister for keyboard notifications while not visible.
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillHideNotification
object:nil];
}
#pragma mark - Keyboard Events
- (void)keyboardWillShow:(NSNotification *)n
{
if (keyboardIsShown)
{
return;
}
NSDictionary* userInfo = [n userInfo];
CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect viewFrame = self.view.frame;
viewFrame.origin.y-= (keyboardSize.height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:kKeyboardAnimationDuration];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
keyboardIsShown = YES;
}
- (void)keyboardWillHide:(NSNotification *)n
{
NSDictionary* userInfo = [n userInfo];
CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect viewFrame = self.view.frame;
viewFrame.origin.y+= (keyboardSize.height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:kKeyboardAnimationDuration];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
keyboardIsShown = NO;
}
Я помещаю первый фрагмент кода в файл .h, а второй более длинный бит в файл .m? – user2731202
есть. Вы можете объявить переменные (keyboardIsSown) и макросы (kKeyboardAnimationDuration) в файле .h, и вы должны зарегистрироваться и использовать уведомление в файле .m – PgmFreek
вид использования прокрутки нажать контент, когда появляется клавиатура.
Используйте это, "TPKeyboardAvoidingScrollView", от:
https://github.com/michaeltyson/TPKeyboardAvoiding
работает действительно хорошо.
Man .. снова дублировать .. Пожалуйста, имейте в виду правила StalkOverFlow .. и пожалуйста, borad your dictionary .. :) :) –