6

J'ai une extension de clavier personnalisée dans mon application qui est développée en utilisant swift. Ils clavier fonctionne très bien. Je voulais ajouter la fonctionnalité de montrer un pop-up avec des caractères supplémentaires lorsque vous appuyez longuement sur un bouton du clavier comme le clavier iOS par défaut. Quelque chose comme ceci:Swift Clavier personnalisé - afficher des lettres supplémentaires sur le clavier en appuyant longuement sur le clavier?

enter image description here

Je recherche beaucoup, mais la plupart d'entre eux sont sans réponses et les réponses sont en Obj-C. Je ne connais pas grand-chose à Obj-C et je suis relativement nouveau à la programmation rapide.

J'ai déjà examiné this, this et this. Mais ceux-ci ne sont pas d'une grande aide.

Toute aide serait vraiment appréciée.

+0

utilisez-vous Custom KeyBoard View ou en utilisant le clavier defuilt? – Dhiru

+0

J'utilise une extension de clavier personnalisé – bhakti123

+0

réponse mis à jour avec correction de bug, s'il vous plaît vérifier et laissez-moi savoir si cela a résolu votre porob @ bhakti123 – Dhiru

Répondre

0

Ceci est très simple de suivre cette étape pour réaliser cette tâche

  • Ouvrez votre principale storyboard
  • Choisissez votre TextField où vous souhaitez que plusieurs lettres veulent de montrer.
  • inspecteur Ouvrir des attributs de la droite de votre écran
  • défiler et cherche capitalization juste au-dessous de Min font size
  • Set capitalization comme mots
  • Définir tous les autres par défaut et surtout keyboard type Maintenant, construire et gérer cela et vérifier avec lettre s, etc. e et

Cela vous aidera à

+0

Je n'ai pas un TextField particulier pour lequel je veux montrer plusieurs lettres. Comme je l'ai mentionné dans la question, je fais une extension de clavier personnalisée. Ce qui signifie que je fais un clavier qui peut être utilisé dans n'importe quelle application. – bhakti123

+0

Donc, vous voulez votre propre clavier et souhaitez afficher plusieurs caractères comme indiqué dans votre figure. Si oui, je vous répondrai dans les plus brefs délais. –

+0

oui. J'ai construit mon propre clavier en utilisant l'extension du clavier chrome. Maintenant, voulez mettre en œuvre la fonctionnalité ci-dessus – bhakti123

1

1. bouton Ajouter votre point de vue
(Ceci est juste pour vous montrer)

let btn: UIButton=UIButton(frame: CGRect(x: 5, y: 70, width: 30, height: 30)) 
    btn.setTitle("A", for: .normal) 
    btn.setTitleColor(UIColor.black, for: .normal); 
    self.view.addSubview(btn) 

2. Ajouter longue PressGesture sur votre bouton

 let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(longPress(sender:))) 
longGesture.minimumPressDuration = 1.2 
     btn.addGestureRecognizer(longGesture) 

3. Poignée Appui long Geste,

Vous pouvez ajouter PopUpView et ajouter un peu de bouton sur elle,

⚠️ Remarque: Vous avez plusieurs boutons, donc vous devez vérifier De CGPoint sur quel bouton il a été exploité sur

func longPress(sender: Any) { 

      let longPressGesture = sender as! UILongPressGestureRecognizer 

//Only run this code When State Begain 
if longPressGesture.state != UIGestureRecognizerState.Began { 
      return 
    } 
// if PopUpView is Already in added than remove and than add 
if let checkView = self.view.viewWithTag(1001) as? UIView { 
     // remove popView 
     popUpView .removeFromSuperview() 
    } 

      let tapLocation = longPressGesture.location(in: self.view) 


      popUpView=UIView(frame: CGRect(x: tapLocation.x-10, y: tapLocation.y-65, width: 150, height: 60)) 
      popUpView.backgroundColor=UIColor.orange 
      popUpView.layer.cornerRadius=5 
      popUpView.layer.borderWidth=2 
      popUpView.tag=1001 
      popUpView.layer.borderColor=UIColor.black.cgColor 

      let btn0: UIButton=UIButton(frame: CGRect(x: 5, y: 5, width: 30, height: 30)) 
      btn0.setTitle("A1", for: .normal) 
      btn0.setTitleColor(UIColor.black, for: .normal); 
      btn0.layer.borderWidth=0.5 
      btn0.layer.borderColor=UIColor.lightGray.cgColor 

      popUpView.addSubview(btn0) 

      let btn1: UIButton=UIButton(frame: CGRect(x: 35, y: 5, width: 30, height: 30)) 
      btn1.setTitle("A2", for: .normal) 
      btn1.setTitleColor(UIColor.black, for: .normal); 
      btn1.layer.borderWidth=0.5 
      btn1.layer.borderColor=UIColor.lightGray.cgColor 

      popUpView.addSubview(btn1) 

      let btn2: UIButton=UIButton(frame: CGRect(x: 70, y: 5, width: 30, height: 30)) 
      btn2.setTitle("A2", for: .normal) 
      btn2.setTitleColor(UIColor.black, for: .normal); 
      btn2.layer.borderWidth=0.5 
      btn2.layer.borderColor=UIColor.lightGray.cgColor 

      popUpView.addSubview(btn2) 

      btn0.addTarget(self, action: #selector(self.buttonAction(sender:)), 
          for: UIControlEvents.touchUpInside) 
      btn1.addTarget(self, action: #selector(self.buttonAction(sender:)), 
          for: UIControlEvents.touchUpInside) 
      btn2.addTarget(self, action: #selector(self.buttonAction(sender:)), 
          for: UIControlEvents.touchUpInside) 

      self.view.addSubview(popUpView) 


     } 

4.Poignée Le bouton supplémentaire Appuyez sur

(Faites votre Stuff ajouter ici supprimer popUpView de SuperView)

 func buttonAction(sender: Any) { 

      // Do your Stuff Here 


      //Than remove popView 
      popUpView .removeFromSuperview() 
     } 

Résultat

enter image description here

✅ Note: Vous pouvez Dessiner la forme personnalisée de PopUpView en utilisant UIBezierPath

J'espère que cela vous aidera.