我遇到了一个奇怪的问题,因为其他事情都很好。突然间,当我编译我的应用程序并遇到这个问题时,当我点击UITextField
空白区域时弹出,但键盘不可见,我无法输入任何内容。
答案 0 :(得分:96)
以下将修复键盘问题
模拟器 - >硬件 - >键盘 - >切换软件键盘应解决此问题。
答案 1 :(得分:47)
试试这个:
转到:
iOS Simulator -> Hardware -> Keyboard
取消选中
'Connect Hardware Keyboard'
或者只是这样做:⇧shift + ⌘命令 + K
保持编码.........:)
答案 2 :(得分:7)
由于模拟器设置,Xcode 6 / iOS 8也会发生这种情况:
答案 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];