{"id":4036,"date":"2010-07-19T14:29:35","date_gmt":"2010-07-19T12:29:35","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=4036"},"modified":"2010-07-20T17:18:28","modified_gmt":"2010-07-20T15:18:28","slug":"t063-inseriamo-una-navigation-bar-sulla-tastiera-stile-safari","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t063-inseriamo-una-navigation-bar-sulla-tastiera-stile-safari\/","title":{"rendered":"T#063 &#8211; Inseriamo una navigation bar sulla tastiera stile safari"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t063-navbar-tastiera.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t063-navbar-tastiera.jpg\" alt=\"t063 navigationbar sulla tastiera\" title=\"t063-navbar-tastiera\" width=\"160\" height=\"130\" class=\"alignleft size-full wp-image-4048\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t063-navbar-tastiera.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t063-navbar-tastiera-300x243.jpg 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t063-navbar-tastiera-150x121.jpg 150w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\" \/><\/a> Ciao ragazzi, un po&#8217; di tempo fa vi ho fatto vedere come inserire il tasto &#8220;done&#8221; sulla tastiera numerica, oggi, invece, vedremo come inserire una <em>NavigationBar<\/em> stile &#8220;Safari&#8221; sulla nostra tastiera.<\/p>\n<p>Iniziamo naturalmente con un nuovo progetto di tipo view-based e chiamiamolo &#8220;KeyTab&#8221;. Bene, apriamo il KeyTabViewController.xib e inseriamo un campo di testo.<!--more--><\/p>\n<p>Passiamo quindi al file di interfaccia KeyTabViewController.h e inseriamo un IBOutlet UITextField :<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n@interface keyTab2ViewController : UIViewController <UITextFieldDelegate> {\r\n    IBOutlet UITextField * txt;\r\n}\r\n@end\r\n<\/pre>\n<p>Aggiungiamo anche il delegato del textField. Torniamo al nostro file .xib e colleghiamo il File&#8217;s Owner con il campo di testo, e il delegato con il campo di testo. (clicchiamo sul file&#8217;s owner tenendo premuto control e colleghiamo le parti).<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/delegato.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4037\" title=\"delegato\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/delegato-300x187.png\" alt=\"\" width=\"300\" height=\"187\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/delegato-300x187.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/delegato-1024x640.png 1024w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/delegato-150x93.png 150w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/delegato.png 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Passiamo ora all&#8217;implementazione dei metodi. Nel viewDidLoad inseriamo la notifica di quando compare la tastiera:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n- (void)viewDidLoad\r\n{\r\n    [super viewDidLoad];\r\n\r\n\t[[NSNotificationCenter defaultCenter] addObserver:self\r\n\t\tselector:@selector(keyboardWasShown:)\r\n\t\tname:UIKeyboardDidShowNotification object:nil];\r\n}\r\n<\/pre>\n<p>Notate che questa volta non abbiamo fatto alcuna differenza per iOS 4 o precedenti, in quanto il procedimento \u00e8 lo stesso del precedente tutorial.<\/p>\n<p>Bene, ora aggiungiamo il metodo per far tornare la tastiera:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n-(BOOL)textFieldShouldReturn:(UITextField *)textField\r\n{\r\n\t[textField resignFirstResponder];\r\n\r\n\treturn YES;\r\n}\r\n<\/pre>\n<p>Passiamo ora al vero e proprio pezzo fondamentale, l&#8217;inserimento della barra:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n- (void)keyboardWasShown:(NSNotification*)aNotification\r\n{\r\n\tNSDictionary *info = [aNotification userInfo];\r\n    NSValue *keyBounds = [info objectForKey:UIKeyboardBoundsUserInfoKey];\r\n\r\n    CGRect bndKey;\r\n    [keyBounds getValue:&amp;bndKey];\r\n\r\n\tUIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, -40, bndKey.size.width, 40)];\r\n\t\/\/[toolbar setTranslucent:YES];\r\n\tUIColor * black = [[UIColor alloc] initWithRed:0 green:0 blue:0 alpha:1.0];\r\n\t[toolbar setTintColor:black];\r\n\tUIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"Bottone 1\" style:UIBarButtonItemStyleBordered target:self action:@selector(buttonClicked:)];\r\n\tNSArray *items = [[NSArray alloc] initWithObjects:barButtonItem, nil];\r\n\t[toolbar setItems:items];\r\n\t[items release];\r\n\r\n\tUIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];\r\n\tUIView* keyboard;\r\n\tfor(int i = 0; i &lt; [tempWindow.subviews count]; i++)\r\n\t{\r\n\t\t\/\/Get a reference of the current view\r\n\t\tkeyboard = [tempWindow.subviews objectAtIndex:i];\r\n\r\n\t\t\/\/Check to see if the description of the view we have referenced is \"UIKeyboard\" if so then we found\r\n\t\t\/\/the keyboard view that we were looking for\r\n\t\tif([[keyboard description] hasPrefix:@\"&lt;UIPeripheralHost\"] == YES)\r\n\t\t{\r\n\t\t\t[keyboard addSubview:toolbar];\r\n\t\t}\r\n\t}\r\n\r\n}\r\n<\/pre>\n<p>Alla riga 7 creiamo la nostra UIToolBar, le dimensioni sono state calcolate perfettamente, gli diamo un colore (in questo caso nero). Creiamo poi un bottone, ne possiamo inserire quanti ne vogliamo, e gli diamo come azione il metodo buttonClicked. Nelle prossime due righe non facciamo altro che creare un array, inserirci dentro il bottone e aggiungere il contenuto dell&#8217;array nella barra. In questo caso i bottoni (se ne create pi\u00f9 di uno) vi verranno messi tutti in fila, partendo da sinistra. altrimenti potete creare dei bottoni tramite delle viste personalizzate e allora li potete posizionare ovunque.<\/p>\n<p>La parte che segue poi \u00e8 sempre la stessa, andiamo alla ricerca della vista della tastiera, una volta trovata gli aggiungiamo la barra.<\/p>\n<p>L&#8217;ultima cosa che ci resta da fare \u00e8 quella di creare il metodo che viene chiamato quando clicchiamo sul bottone:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n- (void)buttonClicked:(NSNotification *)note\r\n{\r\n\tUIAlertView *alert = [[UIAlertView alloc] initWithTitle:@\"CLICK!!!\" message:@\"Hai cliccato il bottone sulla tastiera!!\" delegate:self cancelButtonTitle:@\"OK\" otherButtonTitles:nil];\r\n\t<div class=\"alert\"><button type=\"button\" class=\"close\">&#215;<\/button><div class=\"clear\"><\/div><\/div>;\r\n\t<div class=\"alert\"><button type=\"button\" class=\"close\">&#215;<\/button><div class=\"clear\"><\/div><\/div>;\r\n}\r\n<\/pre>\n<p>Ecco qui, quando si clicca su bottone compare un alertView. Spero che i miei brevi tutorial vi siano utili, se volete potete scaricare il progetto da qui:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/keyTab2.zip\">Progetto KeyTab<\/a><br \/>\n<\/center><\/p>\n<p>Eccovi uno screenshot del tutorial in esecuzione:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/tastiera.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4039\" title=\"tastiera\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/tastiera-156x300.png\" alt=\"\" width=\"156\" height=\"300\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/tastiera-156x300.png 156w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/tastiera-78x150.png 78w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/tastiera.png 386w\" sizes=\"auto, (max-width: 156px) 100vw, 156px\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ciao ragazzi, un po&#8217; di tempo fa vi ho fatto vedere come inserire il tasto &#8220;done&#8221; sulla&#8230;<\/p>\n","protected":false},"author":136,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[270,24,333,334,242],"class_list":["post-4036","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-andrea-cappellotto","tag-interface-builder","tag-navigation-bar","tag-tastiera","tag-tutorial-xcode"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/136"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=4036"}],"version-history":[{"count":11,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4036\/revisions"}],"predecessor-version":[{"id":4059,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4036\/revisions\/4059"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=4036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=4036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=4036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}