Vai al contenuto

Gestire la tastiera (->spostare la view per far spazio alla tastiera)


Messaggi raccomandati

Ebbene si... non ci riesco.....

Ho seguito (che vuol dire copia-incollato) la guida sul sito apple.

Ho una scrollview che copre tutta la finestra e dentro c'è la vera vista (quindi View->ScrollView->tutto il resto).

Setto il contentSize della scrollview a self.view.frame.size.

Se non ho un navigation controller funziona. Se invece l'aggiungo manca qualche "pixel" al comportamento corretto.

Però se provo a bilanciare non cambia comunque niente.

Avete già affrontato questo problema?

Link al commento
Condividi su altri siti

  • 1 mese dopo...

Riuppo la discussione...

Sono riuscito a far mostrare la tastiera e a farla scomparire. Per quanto riguarda lo "scomparire" l'ho fatto in due passi perché altrimenti l'animazione non mi andava..

Secondo voi è giusto? Oppure esiste un modo migliore?


[color=#008b00]
[color=#7f4726]#define PADDING [/color][color=#3d00db]20[/color][color=#7f4726] [/color]// padding for textfield[/color]
- ([color=#cc00a2]void[/color])keyboardDidShown: ([color=#7c22ab]NSNotification[/color]*)notification
{
[color=#7c22ab]NSDictionary[/color]* info = [notification [color=#470083]userInfo[/color]];[color=#008b00]
//Get the size of the keyboard[/color][color=#7c22ab]
[color=#000000]    [/color]CGSize[color=#000000] kbSize = [[info [/color][color=#470083]objectForKey[/color][color=#000000]:[/color]UIKeyboardFrameBeginUserInfoKey[color=#000000]] [/color][color=#470083]CGRectValue[/color][color=#000000]].[/color]size[color=#000000];[/color][/color]

[color=#008b00]
//These lines add padding (to the bottom) for the scrollview, so that the keyboard does not cover the contentView.[/color]
   [color=#7c22ab]UIEdgeInsets[/color] contentInsets = [color=#470083]UIEdgeInsetsMake[/color]([color=#3d00db]0.0[/color], [color=#3d00db]0.0[/color], kbSize.[color=#7c22ab]height[/color], [color=#3d00db]0.0[/color]);
   [color=#cc00a2]self[/color].[color=#3f8288]scrollView[/color].[color=#7c22ab]contentInset[/color] = contentInsets;
   [color=#cc00a2]self[/color].[color=#3f8288]scrollView[/color].[color=#7c22ab]scrollIndicatorInsets[/color] = contentInsets;

[color=#7c22ab]CGRect[/color] textFieldRect = [color=#3f8288]_activeField[/color].[color=#7c22ab]frame[/color];[color=#008b00]
//add padding to rect[/color]
textFieldRect.[color=#7c22ab]origin[/color].[color=#7c22ab]y[/color] += [color=#7f4726]PADDING[/color];
[color=#470083]
[color=#000000][[/color][color=#cc00a2]self[/color][color=#000000].[/color][color=#3f8288]scrollView[/color][color=#000000] [/color]scrollRectToVisible[color=#000000]:textFieldRect [/color]animated[color=#000000]:[/color][color=#cc00a2]YES[/color][color=#000000]];[/color][/color]

}

- ([color=#cc00a2]void[/color])keyboardWillHide: ([color=#7c22ab]NSNotification[/color]*)notification
{[color=#470083]
[color=#000000][[/color][color=#3f8288]_scrollView[/color][color=#000000] [/color]setContentOffset[color=#000000]:[/color][color=#7c22ab]CGPointZero[/color][color=#000000] [/color]animated[color=#000000]:[/color][color=#cc00a2]YES[/color][color=#000000]]; [/color][/color]
}

- ([color=#cc00a2]void[/color])keyboardDidHide: ([color=#7c22ab]NSNotification[/color]*)notification
{[color=#7c22ab]
UIEdgeInsets[color=#000000] contentInsets = [/color]UIEdgeInsetsZero[color=#000000];[/color][/color]
   [color=#3f8288]_scrollView[/color].[color=#7c22ab]contentInset[/color] = contentInsets;
   [color=#3f8288]_scrollView[/color].[color=#7c22ab]scrollIndicatorInsets[/color] = contentInsets;
}

Link al commento
Condividi su altri siti

  • 2 settimane dopo...

non si capisce nulla

Hai un'idea su un'applicazione per iPhone e non sai come realizzarla? Realizzerò io la tua applicazione per te che potrai vendere su App Store beneficiando di tutti i guadagni.

Vuoi imparare a programmare per iPhone? Offro corsi e lezioni private di programmazione per ogni livello di conoscenze.

Contattami via email o visita http://simoneleopizzi.com.

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...