• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#055 – Sfruttiamo le ScrollView per visualizzare al meglio più oggetti

By Andrea Cappellotto | on 22 Giugno 2010 | 8 Comments
Senza categoria

Ciao a tutti, mi chiamo Andrea Cappellotto e sono da poco entrato nel Team di devAPP come collaboratore. Ho ventuno anni e studio Scienze Informatiche a Trento. Naturalmente come tutti voi ho sempre seguito devAPP e devo dire che mi ha dato una grande mano nei miei progetti. Sviluppo per iPhone da qualche mese, e attualmente (per mia fortuna) è diventato anche un lavoro. Ma non perdiamoci troppo in chiacchiere inutili!! Ecco il mio primo tutorial!!

Una limitazione che ho riscontrato fin da subito nello sviluppo di applicazioni mobile è lo spazio a disposizione sul display per inserire oggetti… Soprattutto quando abbiamo bisogno magari di 5-6 campi di testo in un’unica vista e non abbiamo spazio a sufficienza perchè la tastiera, ad esempio, ci occupa molto posto, e cosi cercando in rete tra forum e siti ho trovato questo tutorial.

L’idea è semplicissima, creiamo una vista in cui inseriremo una ScrollView e poi, al suo interno, tutti i nostri campi di testo. Se il campo di testo è già visibile, allora non scrolleremo la vista, altrimenti, quando cliccheremo su di un campo, faremo in modo che questo si metta automaticamente in un’area visibile.

Creiamo il progetto Xcode

Partiamo creando un nuovo progetto “View-based Application” e assegniamogli un nome a piacimento (ad esempio “scrollView”).



Per comodità andremo a lavorare sui file “scrollViewViewController”, niente ci impone di utilizzare solo questi, potremmo applicare questo metodo a qualsiasi altra vista.

Partiamo dal file di intestazione “scrollViewViewController.h”. Prima di tutto settiamo i delegati, abbiamo bisogno sia dello UIScrollViewDelegate che dell’ UITextFieldDelegate. Creiamo quindi tre campi di testo e un’UIScrollView asseggnando a tutti e 4 il relativo IBOutlet, inseriamo infine un’ UITextField che servirà per determinare in quale campo di testo l’utente sta scrivendo e una variabile booleana per decidere se quel campo di testo è da spostare o meno.

Ecco come si presenta il nostro file .h modificato:



Salviamo e passiamo ad inserire gli oggetti nell’interfaccia grafica.

Creiamo l’interfaccia grafica

Apriamo il file “ScrollViewViewController.xib” tramite semplice doppio click e si aprirà Interface Builder. Sull’ispector sarà presente una View, cancelliamola e inseriamo al suo posto una Scrollview che possiamo prelevare dalla libreria degli oggetti disponibili. Inseriamo ora tre TextField: due nella parte superiore della vista e una in quella inferiore. Dovremmo ottenere qualcosa di simile a quanto mostrato qui in basso:



A questo punto non ci resta che collegare i textField e la scrollView con gli oggetti dichiarati precedentemente via Xcode. Sulla finestra Ispector premete ctrl e tenendolo premuto cliccate sul File’s Owner, si aprirà una finestra. Cliccate sul pallino sulla destra di ogni oggetto e tenendo cliccato collegate la freccia con il rispettivo dell’interfaccia utente appena disegnato. Ripetete questa operazione per tutti i campi di testo e la scrollView. Collegate anche view alla scrollView disegnata prima. Collegate infine il delegate con i campi di testo e la scrollView. Ecco come dovrebbe essere il risultato finale:





Anche questa parte è finita, passiamo ora al file di implementazione .m

Implementiamo i nostri metodi

Decommentiamo il metodo “viewDidLoad” e inseriamo 2 notifiche. Le notifiche servono per eseguire un metodo quando si verifica un determinato evento, in questo caso quando la tastiera compare e scompare. Su selector indichiamo il metodo da eseguire, su nome indichiamo quale evento si vuole notificare, mentre su object a quale oggetto vogliamo applicare tale notifica. In questo caso la notifica va applicata a qualsiasi cosa e per questo object è impostato a nil.

Il primo metodo che andiamo a vedere è textFieldDidBeginEditing:.

Questo metodo ci fornisce il TextField in cui l’utente ha cliccato. Noi non facciamo altro che impostare l’ActiveField uguale a questo campo, in modo da poter sapere di quanto spostare la scrollView.

Passiamo ora ad esaminare i prossimi due metodi, keyboardWasShown: e keyboardWasHidden:

Questi metodi si occuperanno di far traslare la nostra scrollView per rendere il campo automaticamente visibile.

Su keyboardWasShown: la prima cosa che andiamo a controllare è se il campo ActiveField (campo in cui l’utente ha cliccato) è uguale al primo o al secondo campo di testo, e in questo caso non facciamo altro che settare la variabile booleana a false, in modo che quando la tastiera scomparirà non dovremmo rispostare la vista.

Se il nostro campo di testo è il terzo allora entriamo nella condizione else e qui prendiamo le dimensioni della tastiera, e settiamo di quanto spostare  la vista. In questo caso il valore 120 è la distanza dal campo di testo al punto 0 della vista. Queste sei righe sono sempre valide, e scusate se non le spiego una ad una, ma mi dilungherei troppo.



keyboardWasHidden: non fa altro che risettare lo spostamento della vista ai valori originali sempre se il metodo precendete ha spostato la vista e quindi keyboardShown è vero.

L’ultima cosa da fare è quella di impostare il ritorno della tastiera quando si clicca su return, per farlo basta aggiungere il metodo textFieldShouldReturn: che non fa altro che rimuovere la tastiera al campo di testo attivo.



Spero che questo piccolo tutorial vi sia stato utile.

Ciao Ragazzi e se avete dubbi non esitate a scrivere!!

Buon Lavoro
Andrea

Share this story:
  • tweet

Tags: Andrea CappellottokeyboardWasHiddenkeyboardWasShowntextFieldShouldReturnTutorial PraticiUIScrollViewUIScrollViewDelegateUITextFieldDelegate

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • UIScrollview – Guida completa all’uso

    7 Novembre 2011 - 15 Comments
  • T#100 – Integrare Dropbox nelle applicazioni iPhone ed iPad

    9 Settembre 2011 - 11 Comments
  • T#099 – Scopriamo la property TAG e impariamo ad usarla durante lo sviluppo di Applicazioni iOS

    1 Agosto 2011 - 4 Comments

Author Description

Perito Elettrotecnico e studente di Scienze Informatiche presso l'università di Trento. Da inizio 2010 , dopo aver lavorato come sistemista-tecnico informatico, si occupa di programmazione in ambito iOS, collabora con un'azienda trentina nello sviluppo di applicazioni iOS per il turismo e realizza soluzioni personalizzate per aziende. Tra gli ultimi progetti ricordiamo l'integrazione tra iOS e Arduino segno che l'open source può benissimo lavorare con sistemi più chiusi come i device Apple! Per devAPP scrive tutorial sulla programmazione, da cosigli su strumenti da utilizzare per semplificare la programmazione, è inoltre moderatore del forum con all'attivo quasi mille post e partecipazioni giornaliere.

8 Responses to “T#055 – Sfruttiamo le ScrollView per visualizzare al meglio più oggetti”

  1. 25 Giugno 2010

    iCiccio

    Ciao Andrea,
    felice di fare la tua conoscenza qui su DevAPP, ho seguito con interesse il tuo tutorial, ed approfitto di questo per porti una domanda:

    Avendo un campo testo (UITextView) ed alcune immagini, come è possibile poter utilizzare UIViewScoll al fine che scorrendo il testo anche le immagini scorrino? Infatti ho provato, ma il testo scorre e le immagini restano ferme li sovrapponendosi al testo che scrollo.

    Saluti e grazie!

  2. 25 Giugno 2010

    andreaAppCode

    Ciao, beh penso che se crei le immagini da codice, assegnandoli quindi le dimensioni e il loro punto di inizio e poi con addSubView aggiungerle alla UIViewScroll funziona tutto alla grande…:) casomai prova a postare nel forum che vediamo di sistemare

  3. 30 Giugno 2010

    Luca

    Non sarebbe il caso quando scrivete 1 tutorial o un articolo far vedere anche il risultato?
    Tipo postare qualche immagine catturata dallo schermo dell’iphone o del simulatore?
    Sarebbero gradite perchè il tutorial risulterebbe più intuitivo e chiaro!

  4. 30 Giugno 2010

    Staff devAPP


    Luca:

    Non sarebbe il caso quando scrivete 1 tutorial o un articolo far vedere anche il risultato?
    Tipo postare qualche immagine catturata dallo schermo dell’iphone o del simulatore?
    Sarebbero gradite perchè il tutorial risulterebbe più intuitivo e chiaro!

    In realtà li inseriamo sempre (vedi il resto dei tutorial) 😉
    In questo caso, però, è un po’ complesso mostrare uno screenshot che illustri correttamente quanto si sta spiegando.

  5. 7 Agosto 2011

    Moris

    Ciao, se creo un progetto analogo per iPad ho un piccolo fastidioso effetto, il terzo campo (opportunamente messo in fondo alla view) viene spostato su di molto (a metà schermo) e non il minimo necessario per far comparire la tastiera.
    Come si può correggere?

  6. 8 Agosto 2011

    milonet

    Ciao, sono riuscito a fare tutto.. ma con Lion (e quindi l’ultimo xcode..).. mi dice però che UIKeyboardBoundsUserInfoKey è deprecato.. cosa si usa ora al posto? maledizione non ci voleva!

  7. 8 Agosto 2011

    Andrea Cappellotto

    ciao, ma ti da un warning oppure proprio errore?

  8. 16 Novembre 2011

    massimo

    Io invece non riesco ancora a capire quali sono i passi per rendere la UIScrollView scrollabile una volta che compare la tastiera. Mi spiego: nel codice non riesco a capire che istruzioni sono necessarie per lo scopo. Viene dato a scrollview.bounds un frame più piccolo? Viene solo spostato in alto? Io per esempio l’ho spostato in alto ma quando tento di scrollarlo ritorna alla posizione originaria (quella che aveva prima che comparisse la tastiera) nascondendo la textview.

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO