web-dev-qa-db-fra.com

UIKeyboard n'apparaît pas lorsque vous appuyez sur UITextField

This is the Signup VC ,as Tapping pops the white space Not the KeyBoardThis is the login VC ,as Tapping pops the white space Not the KeyBoard

J'avais été dans un problème étrange, car toutes les autres choses fonctionnent bien. Tout à coup, lorsque j'ai compilé mon application et que j'ai eu ce problème, lorsque j'ai tapé sur l'espace blanc UITextField apparaît, mais le clavier n'est pas visible et je ne peux rien entrer.

48
user3518271

Ce qui suit résoudra le problème du clavier

Simulator -> Hardware -> Keyboard -> Toggle Software Keyboard devrait résoudre ce problème.

![Simulator->Hardware->Keyboard->Toggle Software Keyboard]

98
Shekhu

Essaye ça:

Aller à:

iOS Simulator -> Hardware -> Keyboard 

Et décochez

'Connect Hardware Keyboard'

Ou faites simplement: ⇧ shift + ⌘ Command + K

Continuez à coder ......... :)

47

Cela peut également se produire avec Xcode 6/iOS 8 en raison des paramètres du simulateur:

Xcode 6: le clavier n'apparaît pas dans le simulateur

7
MaryAnn Mierau

J'ai le même problème mais uniquement sur le simulateur 5s. Et, j'ai essayé d'aller sur simulateur-> réinitialiser le contenu et les paramètres. Cela a en fait résolu le problème.

3
Fred Hsiao

Assurez-vous également que vous ne jouez pas avec yourTextField.inputView

2
Joe

à cet égard, vérifiez deux choses

1-userInteractionEnabled=true

2- textFielfd.editable = YES;

J'espère que cela résoudra votre problème.

2
Macrosoft-Dev

vérifiez si à un moment donné vous faites quelque chose comme

[self.view endEditing:YES];
[self.myTextField resignFirstResponder];

ou peut-être attribuez-vous le premier intervenant à un autre contrôle.

J'espère que ça aide

2
washloops

Vérifiez si la prise est mappée et le délégué défini sur le contrôleur? Vérifiez également si le contrôleur a <UITextFieldDelegate> ensemble. Envoyer une capture d'écran de l'inspecteur de fichiers, peut-être?

1
rbs

J'ai eu le même problème mais sur le périphérique réel.
J'ai parlé à Apple support technique développeur (Apple DTS) et ils m'ont dit que c'était un Swift ou bogue Xcode).
J'ai fait un petit contournement. Ne pensez pas que c'est une meilleure solution jusqu'à ce que Apple résout ce problème, mais cela fonctionne sans problème maintenant.

Remplacez simplement la classe UITextField:

class PBTextField : UITextField {

var keyboardShowDate = NSDate()

required init?(coder aDecoder: NSCoder)
{
    super.init(coder: aDecoder)

    self.initialisation()
}

override init(frame: CGRect)
{
    super.init(frame: frame)

    self.initialisation()
}

func initialisation()
{
    self.addTarget(self, action: "editingDidBegin:", forControlEvents: UIControlEvents.EditingDidBegin)
    self.addTarget(self, action: "editingDidEnd:", forControlEvents: UIControlEvents.EditingDidEnd)
}

// MARK: Delegates

func editingDidBegin(sender: AnyObject)
{
    self.becomeFirstResponder()
    self.keyboardShowDate = NSDate()
}

func editingDidEnd(sender: AnyObject)
{
    if(fabs(self.keyboardShowDate.timeIntervalSinceNow) <= 0.5)
    {
        self.becomeFirstResponder()
        dispatch_after(0.1, block: { () -> Void in
            self.becomeFirstResponder()
        })
    }
}

}

méthodes d'expédition:

typealias dispatch_cancelable_block_t = ((cancel: Bool) -> Void)

func dispatch_async(block: dispatch_block_t, background: Bool = true) -> dispatch_cancelable_block_t?
{
return dispatch_after(0, block: block, background: background)
}

func dispatch_after(delay: NSTimeInterval = 0, block: dispatch_block_t, background: Bool = false) -> dispatch_cancelable_block_t?
{
var cancelableBlock : dispatch_cancelable_block_t?

let delayBlock : dispatch_cancelable_block_t = { (cancel) -> Void in
    if(cancel == false)
    {
        if(background)
        {
            block()
        }
        else
        {
            dispatch_async(dispatch_get_main_queue(), block)
        }
    }

    cancelableBlock = nil
};

cancelableBlock = delayBlock

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * NSTimeInterval(NSEC_PER_SEC))), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
    if let cb = cancelableBlock
    {
        cb(cancel: false)
    }
})

return cancelableBlock
}

func cancel_block(block: dispatch_cancelable_block_t)
{
    block(cancel: true)
}

J'espère que cela aidera quelqu'un.
Si vous avez une meilleure solution, faites-le moi savoir dans les commentaires.
Merci
Giorgi

1
Rendel

Ajouter [textField canBecomeFirstresponder];

0
Vineesh TP