2014-09-12 10 views
10

Attualmente cambio la dimensione della vista a scorrimento quando la tastiera è attiva. Uso anche le frecce per consentire all'utente di passare rapidamente al campo di testo successivo. Il mio scrollRectToVisible non funziona correttamente nella direzione verticale. Si muove orizzontalmente correttamente. Ho riscontrato un problema con la mia tavoletta decimaleLa visualizzazione della tastiera in iOS 8 si comporta in modo strano

2014-09-12 10:29:24.039 TS[1895:455658] Can't find keyplane that supports type 8 for keyboard iPhone-Portrait-DecimalPad; using 1425143906_Portrait_iPhone-Simple-Pad_Default 

Ho anche analizzato il seguente codice.

- (void)keyboardDidShow:(NSNotification *)n { 
// Find top of keyboard input view 
CGRect keyboardRect = [[[n userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; 
keyboardRect = [self.view convertRect:keyboardRect fromView:nil]; 
CGFloat keyboardTop = keyboardRect.origin.y; 

// Resize scroll view 
CGRect newScrollViewFrame = CGRectMake(0, 0, self.view.bounds.size.width, keyboardTop); 
newScrollViewFrame.size.height = keyboardTop - self.view.bounds.origin.y; 
[self.scrollView setFrame:newScrollViewFrame]; 
} 

ho notato che il keyboardRect è 244 per il mio pad decimale e 207 per la mia tastiera predefinita. Non sono sicuro di come sistemarlo. Anche questo problema è apparso solo in iOS 8. La mia app non ha avuto problemi con iOS 7. Grazie per l'aiuto.

AGGIORNAMENTO: Ho scoperto che quando un campo di testo viene inizialmente selezionato, la vista scorrevole si sposta in modo appropriato. Quando si seleziona un altro campo di testo mentre la tastiera è attiva, si verifica quando si verifica il problema. Sembra che la scrollview ripristini le sue dimensioni alle dimensioni originali. Perché dovrebbe succedere? C'è un modo per impedire che ciò accada?

+0

Stavo affrontando lo stesso strano comportamento mentre lavoravo con scorllview e autorizzando in ios 8.4, Xcode 6.4. Una soluzione rapida per questo è regolare il frame del tuo ScrollView in textField delegate Method - (void) textFieldDidEndEditing: (UITextField *) textField. –

risposta

0

1) problema

vedi questo post: Xcode iOS 8 Keyboard types not supported

2) problema:

non sicuro di quello che vuoi dire. potrebbe essere correlato al cambio di tipo di tastiera di iOS 8. E ricorda che il rect include qualsiasi tipo di vista accessoria che hai aggiunto.

3) ulteriore problema nella sezione aggiornamento:

I verifica lo stesso problema, e fa capire alcuni indizi.

Ho una vista di scorrimento posizionata all'interno di viewcontroller.view e un mucchio di campi di testo all'interno di quella vista di scorrimento. Faccio un ridimensionamento della cornice di scorrimento su UIKeyboardDidShowNotification e UIKeyboardWillHideNotification. Funziona perfettamente su iOS7, ma su iOS8 lo scrollview ridimensionerà silenziosamente alle dimensioni normali quando ti concentri su un altro campo di testo (diventa il primo soccorritore).

Ho dato un ulteriore sguardo in esso. Ho un'altra pagina, che viene creata prima dell'upgrade di iOS8 e funziona perfettamente alla perfezione usando la stessa logica. Ma una differenza è che in quella pagina la vista di scorrimento viene aggiunta a livello di codice e questa pagina malfunzionante è il layout automatico (scrollview ha tutti i vincoli di zero zero relativi a viewcontroller.view).

Quindi ho eseguito un test, ridimensionato il frame e associato a viewcontroller.view su keyboardshow/hide e il problema è scomparso. Quindi suppongo che iOS8 aggiunga un nuovo layout di pagina (ricalcoli i vincoli) in vista del primo cambio di responder.

Non so quale sia la soluzione migliore. Aggiornerà questa risposta quando trovo un modo migliore per gestire questo problema.

+0

Potrei sicuramente vedere il problema relativo al layout automatico. Non ho avuto molto tempo per testarlo ultimamente. Ma proverò a cambiare il layout automatico e vedere cosa succede. Grazie – jmr1706

Problemi correlati