2012-04-27 2 views
1

У нас есть открытая клавиатура с открытой клавиатурой, но при нажатии кнопки «Назад» изображение открывается с правой стороны, когда клавиатура будет скользить только тогда, когда вид исчез. , если мы вызываем resignFirstResponder в viewwilldisappear, вид сдвигается вправо, пока клавиатура сдвигается в одно и то же время. Можно ли выпустить клавиатуру с видом?IPhones- Выдвиньте клавиатуру с изображением

ответ

0

Попробуйте приклеить resignFirstresponder в методе viewDidDisappear.

+0

не работает. – gage

+0

вызов resignfirstresponder здесь, просмотр слайдов и клавиатура выдвигаются, когда вид исчез, так же, как никогда не вызывать resignfirstresponder или вызывать его ad didunload. – gage

0
  **Set notificatins and use these methods.....Hope it solve problem: 

      First of all set your whole view in scrollView** 
      -(void)keyboardDidHide:(NSNotification *)notif 
    { 
      NSTimeInterval duration = 0.4; 
      [UIView animateWithDuration:duration animations: 
       ^{ 
       scrollView.contentSize=CGSizeMake(320,scrollOriginalFrame.size.height); 
       }]; 
       keyboardVisible=NO; 
    } 
    -(void)keyboardDidShow:(NSNotification *)notif 
    { 

     scrollView.contentSize=CGSizeMake(self.view.frame.size.width, scrollOriginalFrame.size.height+235); 
     NSTimeInterval duration = 0.4; 

     [UIView animateWithDuration:duration animations: 
      ^{ 
      [scrollView setContentOffset:CGPointMake(0,162) animated:YES]; 

     }]; 
      keyboardVisible=YES; 
      } 
       **In viewDidLoad() add this** 

     //keyboard 
     scrollOriginalFrame=self.view.frame; 
      scrollOriginalFrame.size.height-=103; 
     scrollView.contentSize=scrollOriginalFrame.size; 
      [[NSNotificationCenter defaultCenter] addObserver:self     selector:@selector(keyboardDidShow:) name:UIKeyboardWillShowNotification object:nil]; 
       [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardWillHideNotification object:nil]; 
keyboardVisible=NO; 
+0

Кажется, у нас нет прокрутки. И, похоже, это тоже не работает, клавиатураDidHide вызывается, когда клавиатура начинает скользить, в этот момент вид уже исчез. – gage

+0

Посмотрите на просмотр прокрутки и переместите прокрутку ... не фактический вид –

1

Там нет стандартного способа сделать то, что вы хотите, но ...
В принципе, клавиатура просто вид, представленный в его собственном UIWindow поверх всех остальных окон.
Итак, теоретически, вам нужно найти клавиатуру и переместить ее в нужном направлении. Я думаю, вы должны использовать transform собственности и не испортить с frame.

Class keyboardClass = NSClassFromString(@"UIPeripheralHostView"); 
for (UIWindow *window in [[UIApplication sharedApplication] windows]) { 
    for (UIView *subview in window.subviews) { 
     if ([subview isKindOfClass:keyboardClass]) { 
      // that's keyboard 
     } 
    } 
} 

Отредактировано:
Если вы говорите о UINavigationController, и это по умолчанию анимации слайдов во время нажимной/поп, то вам просто нужно вызвать resignFirstResponder в viewDidDisappear и becomeFirstResponder в viewWillAppear на ваш взгляд текста. Таким образом, ваша клавиатура будет скользить вместе с вашим видом.

+0

Он работает, но у него все еще есть другой вопрос. Клавиатура не сдвигается вправо, а правый правый угол. И когда я вхожу во второй раз, клавиатура может перемещаться. – gage

+0

Клавиатура скользит вниз как часть стандартного отклонения клавиатуры. Я думаю, вы вызываете resignFirstResponder в свой метод viewWillDissapear. Возможно, вам следует наблюдать за уведомлениями о клавиатуре, а затем отменить его оригинальные анимации '[view.layer removeAllAnimations]' и выполнить собственные анимации. –

+0

removeallanimations не может помешать сползать клавиатуру вниз, казалось, что система выполняет вычисление анимации клавиатуры после клавиатуры. – gage

1

Я тестировал это, и он работает в iOS 5.1, однако я не думаю, что это рекомендуется поведением.

for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows]) 
    if ([[keyboardWindow description] hasPrefix:@"<UITextEffectsWindow"]) { 
     NSLog(@"%@", [keyboardWindow description]); 
     [UIWindow beginAnimations:@"fadeKeyboard" context:nil]; 
     keyboardWindow.frame = CGRectMake(keyboardWindow.frame.origin.x + keyboardWindow.frame.size.width, keyboardWindow.frame.origin.y, keyboardWindow.frame.size.width, keyboardWindow.frame.size.height); 
     [UIWindow commitAnimations]; 
    } 

Вы также можете использовать уведомление UIKeyboardWillHideNotification для обнаружения, когда клавиатура будет скрывать, или просто использовать приведенные выше коды вручную.

Смежные вопросы