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.
Ce qui suit résoudra le problème du clavier
Simulator -> Hardware -> Keyboard -> Toggle Software Keyboard devrait résoudre ce problème.
Essaye ça:
Aller à:
iOS Simulator -> Hardware -> Keyboard
Et décochez
'Connect Hardware Keyboard'
Ou faites simplement: ⇧ shift + ⌘ Command + K
Continuez à coder ......... :)
Cela peut également se produire avec Xcode 6/iOS 8 en raison des paramètres du simulateur:
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.
Assurez-vous également que vous ne jouez pas avec yourTextField.inputView
à cet égard, vérifiez deux choses
1-userInteractionEnabled=true
2- textFielfd.editable = YES;
J'espère que cela résoudra votre problème.
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
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?
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
Ajouter [textField canBecomeFirstresponder];