点击 UITextField 时没有出现 UIKeyboard
Posted
技术标签:
【中文标题】点击 UITextField 时没有出现 UIKeyboard【英文标题】:UIKeyboard not appearing when tapping on UITextField 【发布时间】:2014-06-14 01:46:07 【问题描述】:我遇到了一个奇怪的问题,因为其他一切都很好。突然,当我编译我的应用程序并遇到这个问题时,当我点击UITextField
时弹出空白,但键盘不可见,我无法输入任何内容。
【问题讨论】:
很高兴看到附上截图... 你能显示视图的屏幕截图吗 检查帖子,更新截图 哇,从未见过类似的东西...... @jww 不是上述问题的重复,因为我在问题中写道一切正常,突然停止工作。今天早上,当我打开我的机器时,它工作正常。但是遇到了一个新问题,因为现在应用程序中的不同视图没有推送或弹出。所以与其浪费时间找出问题,我将代码回滚到昨天早上并保存了错误代码的副本。我会检查代码稍后解决问题。 【参考方案1】:以下将修复键盘问题
模拟器 -> 硬件 -> 键盘 -> 切换软件键盘 应该可以解决这个问题。
【讨论】:
感谢您的帮助,重新启动 Mac 解决了问题...@aiden 呃。一定是无意中抓住了命令 shift k 并花了一个小时试图弄清楚为什么我的键盘没有出现!谢谢。 请注意,它仅在应该出现键盘的运行时刻起作用。【参考方案2】:试试这个:
转到:
ios Simulator -> Hardware -> Keyboard
然后取消选中
'Connect Hardware Keyboard'
或者干脆做:⇧ shift + ⌘ 命令 + K
继续编码...... :)
【讨论】:
我尝试了“切换软件键盘”,键盘出现在我面前。 这是什么魔法? :)【参考方案3】:由于模拟器设置,Xcode 6/iOS 8 也可能发生这种情况:
Xcode 6: Keyboard does not show up in simulator
【讨论】:
【参考方案4】:我有同样的问题,但只在 5s 模拟器上。而且,我试图去模拟器->重置内容和设置。这实际上解决了问题。
【讨论】:
我很高兴找到了这个建议,但我并不高兴我花了一夜的时间来解决这个问题。【参考方案5】:还要确保你没有搞乱yourTextField.inputView
【讨论】:
【参考方案6】:在这方面检查两件事
1-userInteractionEnabled=true
2-textFielfd.editable = YES;
希望这能解决您的问题。
【讨论】:
NO ,因为启用了用户交互并且弹出空白而不是键盘 第二个选项没有帮助【参考方案7】:检查您是否在某个时候正在做类似的事情
[self.view endEditing:YES];
[self.myTextField resignFirstResponder];
或者您可能正在将第一响应者分配给其他控件。
希望对你有帮助
【讨论】:
【参考方案8】:检查出口是否已映射并且委托是否设置为控制器?还要检查控制器是否设置了<UITextFieldDelegate>
。
发送文件检查器的屏幕截图,也许?
【讨论】:
【参考方案9】:我遇到了类似的问题,但在实际设备上。 我与苹果开发者技术支持 (Apple DTS) 进行了交谈,他们告诉我这是一个 swift 编译器或 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)
希望这对某人有所帮助。 如果您有更好的解决方案,请在 cmets 中告诉我。 谢谢 乔治
【讨论】:
【参考方案10】:添加[textField canBecomeFirstresponder];
【讨论】:
以上是关于点击 UITextField 时没有出现 UIKeyboard的主要内容,如果未能解决你的问题,请参考以下文章
当我在 UITextField 中快速点击时,为啥 UIKeyboard 不出现?
在点击 UITextField 时,出现 DatePicker
UITextField 的键盘不会出现在 Swift 中的第一次点击时