Admin Maghetto Inviato 13 Marzo 2017 Admin Segnala Condividi Inviato 13 Marzo 2017 Implementare le funzionalità della Touch Bar in una applicazione per Mac è una cosa abbastanza semplice, come al solito Apple ha reso la vita degli sviluppatori abbastanza piacevole. Ecco un piccolo tutorial da usare come starter. Nota: non è necessario avere un Mac con la Touch Bar per seguire questo tutorial. 1. Creiamo il nuovo progetto Crea una Cocoa Application per macOS con Storyboard e linguaggio Swift (scegli il nome che preferisci, per esempio "ProvaTouchBar"). 2. Aggiungiamo la Touch Bar Vai in Main.storyboard, cerca "touch" nella libreria di oggetti e poi trascina l'item "Touch Bar" sul "Window Controller". Ora trascina un controllo Touch Bar button sopra la Touch Bar che si è creata. 3. Creiamo un file che controlli la finestra che contiene la Touch Bar Scegli File > New File e scegli Cocoa Class per macOS e clicca su Next. Come nome, nel campo Class, metti "ClasseTouch" (è un nome a scelta, puoi mettere per esempio anche "WindowController" se poi vuoi usarlo anche per altri scopi) e come subclass scegli "NSWindowController", disabilita il checkbox "Also create XIB file for user interface. Ora fai click su Create per creare il file. Vai in Main.storyboard e nal rettangolo che rappresenta la Window (è scritto nella barretta), fai clic sull'iconcina blu rappresentante il Window Controller. Ora nell' Identity inspector, nella sezione "Custom Class", inserisci nel campo Class "ClasseTouch" (o il nome che hai scelto, ti verrà proposto appena inizi a digitare). 4. Colleghiamo il pulsante della Touch Bar con un metodo IBAction per fargli fare qualcosa Scegli il pulsante e clicca nell'icona dell'Assistent Editor (quello con l'icona con due cerci sovrapposti). Assicurati che si sia aperto il file ClasseTouch.swift (o come l'hai chiamato .swift), altrimenti sceglilo dai menu popup con il percorso dei file che c'è nella barretta sopra il code editor. Con il tasto Control premuto, trascina dal pulsante della Touch Bar fino all'interno della classe "ClasseTouch" e crea un action: Cita @IBAction func pulsanteTappato(_ sender: Any) { print ("Hai fatto tap") } 5. Eseguiamo un metodo presente nel ViewController invece che in ClasseTouch Se vuoi che, invece che un metodo presente nella classe ClasseTouch, venga eseguito un metodo che hai creato per esempio nella classe ViewController, al posto dello statement "print ("Hai fatto tap")", inserisci questo: Cita let vc = ViewController() // ottieni una istanza del ViewController vc.nomeDelMetodo() // il metodo presente nel ViewController 6. Proviamo l'app Se il tuo Mac non ha la Touch Bar, apri il simulatore di Touch Bar scegliendo: Window > Show Touch Bar dal menu di Xcode. Prova il progetto, e buon divertimento con Swift e Xcode! Hai domande su Swift e Xcode o ti piace aiutare gli altri? Vai nella sezione dedicata a Xcode e Swift del forum. E se ti piace parlare di Swift vieni a bere una birra allo Swift BAR! Link al commento Condividi su altri siti Altre opzioni di condivisione...
Admin Maghetto Inviato 20 Marzo 2017 Autore Admin Segnala Condividi Inviato 20 Marzo 2017 Quando implementate la TouchBar in una finestra che ha anche un campo di testo, se questo è selezionato, verrà mostrata la touch bar standard invece della vostra touch bar personalizzata. C'è un interessante post di Joecie Plinski che spiega come ci si può comportare in questa evenienza aggiungendo una estensione per la NSTextView (attenzione, proprio NSTextView, non NSTextField): http://www.joecieplinski.com/blog/2016/11/22/touch-bar-support-and-interface-builder/. Link al commento Condividi su altri siti Altre opzioni di condivisione...
Admin Maghetto Inviato 20 Marzo 2017 Autore Admin Segnala Condividi Inviato 20 Marzo 2017 Per chi volesse approfondire l'argomento Touch Bar, ecco un video piuttosto completo di Stefan Wittwer dell'implementazione della Touch Bar in Interface Builder: Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.