Lezione 2 Objective-c (iPhone) Browser

Come secondo tutorial ho deciso di spiegarvi come si crea un Browser !!!!

Questa applicazione è molto semplice da implementare poichè in nostro aiuto verrà un oggetto che farà quasi tutto il compito da solo ma bando alle ciance iniziamo subito ^_^.

Apriamo xcode e creiamo un nuovo progetto di tipo View-based Application e come nome inserite browser .

Passiamo subito alla dichiarazione degli oggetti dunque clicchiamo su browserviewcontroller.h  e inseriamo questo codice :

@interface myBrowserViewController : UIViewController {
    IBOutlet UIWebView *webView;
    IBOutlet UITextField *indirizzo;
}

@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) IBOutlet UITextField *indirizzo;

- (IBAction)open;

@end

Piccola spiegazione  del codice:

dichiariamo subito due oggetti di tipo uitextfield (che ci servirà per inserire l’indirizzo)

e uno di tipo uiwebview (che è l’oggetto che ci permette la navigazione web)

e come ultima dichiarazione ci sta open che è l’azione che compiremo per aprire le pagine web

Ora andiamo su browser.xib per disegnare l’interfaccia grafica e inseriamo i seguenti oggetti :

  • N. 1 UIToolBar
  • N. 4 UIBarButtonItem
  • N. 1 Flexible Space Bar Button Item
  • N. 1 UIWebView
  • N. 1 UITextField
  • N. 1 UIButton

Il risultato finale dovrà essere simile a questo :

Effettuiamo ora i collegamenti tra gli oggetti

1)Clicchiamo su File’s Owner e colleghiamo “Indirizzo” con l’UITextField.

2)webView con l’UIWebView e con il bottone vai (selezionare Touch Up Inside)

3)Clicchiamo sulla UIWebView e colleghiamo le quattro Received Action presenti con i rispettivi pulsanti nella ToolBar inseriti in precedenza.

Abbiamo quasi finito ora non ci resta che implentare il codice ^_^

apriamo il file browserviewcontroller.m e inseriamo questo codice :

@synthesize webView;
@synthesize indirizzo;

- (IBAction)open{
	NSString *strIndirizzo = indirizzo.text;
	NSURL *url = [NSURL URLWithString:strIndirizzo];
	NSURLRequest *request = [NSURLRequest requestWithURL:url];
	[webView loadRequest:request];
	[webView setScalesPageToFit:YES];
}

- (void)viewDidLoad {
    [super viewDidLoad];
	NSString *strIndirizzo = @"http://www.iprog.it/blog/";
	NSURL *url = [NSURL URLWithString:strIndirizzo];
	NSURLRequest *request = [NSURLRequest requestWithURL:url];
	[webView loadRequest:request];
	[webView setScalesPageToFit:YES];
}

Spiegazione del codice:

apri pagina

Abbiamo creato un oggetto NSString, chiamato  strIndirizzo  a cui passeremo il contenuto della UITextField, ovvero l’indirizzo che vorremo visitare.

L’indirizzo viene quindi passato a un oggetto NSURL che passerà a sua volta ad un’altro di tipo NSURLRequest, chiamato request, che useremo infine per caricare la pagina tramite il metodo loadRequest della UIWebView

L’ultima istruzione setScalesPageToFit:YES serve per abbilitare lo zoom

Come possiamo notare il codice che viene dopo è simile a quello precedente

Abbiamo quasi terminato dobbiamo inserire solo l’ultima istruzione e la nostra applicazione è pronta per essere utilizzata!!!

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
Questo metodo non fa altro che nascondere la tastiera

Torniamo quindi sul file browser.xib e clicchiamo sulla UITextView, apriamo la finestra Connections  e colleghiamo l’unico Outlets presente con File’s Owner.

Ora possiamo provare la nostra applicazione è terminata e pronta per l’uso

Ps

Ricordate di inserire anche “http://” negli indirizzi

Scarica  il Progetto Link

[yframe url=’http://www.youtube.com/watch?v=9734FjGxp3M&feature=channel_video_title’]

Related Posts

iOS Continuos Integration con Xcode 9

Come creare un framework in swift

Perchè usare JSON: 3 motivi sul perchè ha rivoluzionato API e Applicazioni

iOS 9: UIStackView

  • Il codice è giusto ho controllato piu volte ma quand clicco con il destro su FIle Owner per fare i collegamenti: in outlets non ho indirizzo, non ho received actions e referencing Outlets è vuoto…
    Help Me!

  • flexkid

    ti ho inviato una mail 😉

  • anche a me stesso problema non ho indirizzo come fai ad averlo? ho solo view

  • Jacopo

    Ho seguito questa guida passo passo e funziona tutto perfettamente 😀 Non è al livello di Safari ma è già un buon inizio xD Ti volevo chiedere se fosse possibile mettere in maniera permanente nella UITextField “http://” in modo da non doverlo riscrivere ogni volta… Io riesco a metterlo la prima volta, poi quando l’utente clicca sulla “X” va via tutto… Come si potrebbe fare?

    Grazie. 🙂

    • Jacopo

      Altra cosa… Se volessi far sparire la tastiera quando premo il pulsante “Vai”? Come faccio?

      • flexkid

        * Rimuovere la tastiera quando l’utente fa un tap sullo sfondo */
        ‐ (IBAction) backgroundTap: (id) sender { [titleField resignFirstResponder]; [description resignFirstResponder];
        }

  • flexkid

    * Rimuovere la tastiera quando viene premuto invio * (funziona con UITextView)
    */
    ‐ (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
    if () {
    [textView resignFirstResponder];
    return FALSE; }
    return TRUE; }

  • flexkid

    * Rimuovere la tastiera quando viene premuto invio
    * (funziona con UITextView)
    */
    ‐(IBAction) textFieldDoneEditing:(id)sender {
    [sender resignFirstResponder]; }

  • flexkid

    spero di esserti stato utile ^_^

    • Jacopo

      Grazie per il codice 🙂 ho provato il primo ma mi dice che sia titleField che description non vanno bene… cosa sono? devo aggiungere qualche framework? oppure sono elementi della mia interfaccia?

      • flexkid

        devi mettere il nome della tua text field oppure puoi creare un bottone che richiama il metodo per chiudere la tastiera

        -(IBAction)chiudi{
        ;
        }

        • Jacopo

          Ok ok ho capito 😀 ho fatto questo nel .m:

          ‐ (IBAction) backgroundTap: (id) sender {
          [MiaTextField1 resignFirstResponder];
          [MiaTextField2 resignFirstResponder];
          }

          e poi ho collegato le 2 TextField al File’s Owner 🙂

          Grazie Mille!

          • flexkid

            Di niente ^_^
            ps ho scritto il tutorial sul segment controller ora puoi modificare a tuo piacere “la calcolatrice”

  • Luca Mauriello

    ciao, potresti indicare un link dove scaricare l’app . Dal link inserito non si può piì
    Grazie
    Ma funziona anche IOS 6?

    • purtroppo il file hosting a cui facevamo riferimento all’epoca non è più disponibile. comunque seguendo passo passo il tutorial otterrai quello che cerchi. PS: funziona benissimo anche per iOS 6

Si prega di attivare i Javascript! / Please turn on Javascript!

Javaskripta ko calu karem! / Bitte schalten Sie Javascript!

S'il vous plaît activer Javascript! / Por favor, active Javascript!

Qing dakai JavaScript! / Qing dakai JavaScript!

Пожалуйста включите JavaScript! / Silakan aktifkan Javascript!