2017-10-20 36 views
0

Existe-t-il un moyen de détecter TOUTES les touches sur le clavier iOS à l'écran et/ou sur un clavier externe comme these? Je sais que la façon "acceptée" d'attraper le texte tapé est d'utiliser une zone de texte invisible, mais qui semble seulement attraper le "texte", pas les touches réelles (pas de Ctrl, Alts, Shift, etc.)Détection des touches dans iOS à partir de l'écran et/ou du clavier externe

Je peux Ne trouvez rien dans les docs qui suggère que cela soit possible, même si cela semble assez basique. Ai-je raté quelque chose, ou pouvons-nous vraiment ne pas y parvenir dans iOS?

Merci!

Répondre

0

Vous pouvez remplacer les keyCommands dans ViewController pour ajouter l'action de déclenchement:

Par exemple:

  //MyViewController 

      override var keyCommands: [UIKeyCommand]?{ 

      //Get UIKeyCommand 

       var keys = [UIKeyCommand]() 

      //Add triggle for Num only 

        for num in "123456789".characters { 

         keys.append(

    UIKeyCommand(input:String(num),modifierFlags: 
    UIKeyModifierFlags(rawValue: 0), action: 
    #selector(MyViewController.keyCommand(_:)), discoverabilityTitle: 
     NSLocalizedString("keydiscover_number", 
     comment: "KeyDiscover  Number"))) 


         } 
     } 



//The Triggle 

func keyCommand(_ sender: UIKeyCommand) { 
         print("Number Clicked"); 
        } 

https://developer.apple.com/documentation/uikit/uiresponder/1621141-keycommands

+0

Dans votre rappel keyCommand, je ne vois personne de savoir quelle clé a été pressé cependant. Aurai-je vraiment besoin d'un rappel pour chaque clé possible? –

+0

Vous pouvez vérifier quelle touche enfoncée à l'intérieur de triggle: laissez l'événement = sender.input si l'événement == UIKeyInputDownArrow { renvoie moveDown (theEvent as AnyObject) } – slee