点击UITextField时UIKeyboard不显示

时间:2014-04-28 13:24:57

标签: ios xcode swift uitextfield

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

我遇到了一个奇怪的问题,因为其他事情都很好。突然间,当我编译我的应用程序并遇到这个问题时,当我点击UITextField空白区域时弹出,但键盘不可见,我无法输入任何内容。

10 个答案:

答案 0 :(得分:96)

以下将修复键盘问题

模拟器 - >硬件 - >键盘 - >切换软件键盘应解决此问题。

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

答案 1 :(得分:47)

试试这个:

转到:

iOS Simulator -> Hardware -> Keyboard 

取消选中

'Connect Hardware Keyboard'

或者只是这样做:⇧shift + ⌘命令 + K

保持编码.........:)

答案 2 :(得分:7)

由于模拟器设置,Xcode 6 / iOS 8也会发生这种情况:

Xcode 6: Keyboard does not show up in simulator

答案 3 :(得分:3)

我遇到了同样的问题但只在5s模拟器上。而且,我试图去模拟器 - >重置内容和设置。这实际上解决了这个问题。

答案 4 :(得分:2)

在这方面检查两件事

1 - userInteractionEnabled=true

2- textFielfd.editable = YES;

希望这能解决您的问题。

答案 5 :(得分:2)

检查是否在某些时候你正在做类似

的事情
[self.view endEditing:YES];
[self.myTextField resignFirstResponder];

或者您可能正在将第一响应者分配给其他控件。

希望有所帮助

答案 6 :(得分:2)

另外请确保您不会弄乱yourTextField.inputView

答案 7 :(得分:1)

检查插座是否已映射且代理设置为控制器?同时检查控制器是否设置了<UITextFieldDelegate>。 发送文件检查器的屏幕截图,也许?

答案 8 :(得分:1)

我遇到了类似的问题但是在实际的设备上 我与苹果开发者技术支持(Apple DTS)进行了交谈,他们告诉我这是一个快速的编译器或Xcode错误。
我做了一点解决方法。不要认为这是一个最好的解决方案,直到苹果解决了这个问题,但它现在没有任何问题。

只需覆盖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()
        })
    }
}

}

调度方法:

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)
}

希望这会对某人有所帮助 如果您有更好的解决方案,请在评论中告诉我 由于
Giorgi的

答案 9 :(得分:0)

添加[textField canBecomeFirstresponder];