KeyBoardDidShow и KeyBoardDidHide Использование уведомлений, работа в портретном режиме, но проблема в альбомной ориентации - PullRequest
2 голосов
/ 17 ноября 2011

Я хочу использовать свое приложение как в портретном, так и в ландшафтном режиме,
У меня проблема: на одном из моих экранов в портретном режиме я использую уведомления для KeyboardDidShow и KeyBoardDidiHide.
Логика для реализации KeyboardDidshowis

-(void)keyboardDidShow: (NSNotification*) notif{          
if (keyboardVisible) {        
    return;  
}  
NSDictionary* info = [notif userInfo];  
NSValue *avalue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey]; 
CGSize KeyboardSize = [avalue CGRectValue].size;  
CGRect viewFrame = scrollview.frame;  
viewFrame.size.height -= KeyboardSize.height;  
scrollview.frame = viewFrame;  
CGRect textViewdRect = [customTextViewTwo frame];  
[scrollview scrollRectToVisible: textViewdRect animated:YES];  
keyboardVisible = YES;  

}

-(void)keyboardDidHide: (NSNotification*) notif{  
if (!keyboardVisible) {
    return;  
}  
NSDictionary *info = [notif userInfo];  
NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];  
CGSize KeyboardSize = [avalue CGRectValue].size;   
CGRect viewFrame = scrollview.frame;
viewFrame.size.height += KeyboardSize.height;  
scrollview.frame = viewFrame;    
keyboardVisible = NO;        

}
Когда я нажимаю на кнопку последнего флажка, прокрутка поднимает изображения вверх, и отображается клавиатура, а когда свернута клавиатура, экран возвращаетсяв нормальное положение.Это нормально работает в режиме Portarit, но в ландшафтном режиме я не вижу экран, когда нажимаю на кнопку последнего флажка

В чем может быть решение?

Может ли кто-нибудь помочь мне в этом

Заранее спасибо
Кислый

1 Ответ

0 голосов
/ 15 декабря 2011

Вы можете получить ориентацию устройства во время выполнения и соответственно изменить размер.

    CGFloat _keyboardHeight;
if ([[UIDevice currentDevice] orientation] ==  UIDeviceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] ==  UIDeviceOrientationLandscapeRight) {
    _keyboardHeight = KeyboardSize.width;
}
else {
    _keyboardHeight = KeyboardSize.height;
}

CGRect viewFrame=_scrollView.frame;
viewFrame.size.height += _keyboardHeight;
_scrollView.frame=viewFrame;

Не забудьте добавить это в методы viewWillAppear и viewWillDisappear. Иначе

[[UIDevice currentDevice] orientation] будетreturn UIDeviceOrientationUnknown

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    //generating device orientation notifications
    [[UIDevice currentDevice]beginGeneratingDeviceOrientationNotifications];
}

-(void)viewWillDisappear:(BOOL)animated {
    //stop generating device orientation notifications
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
}

Попробуйте и дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...