在UITextField上点击时不会出现UIKeyboard
我陷入了一个奇怪的问题,因为其他的事情都很好。 突然间,当我编译我的应用程序,并得到这个问题,当我点击UITextField
白色空间popup,但键盘不可见,我无法input任何东西。
以下将解决键盘问题
模拟器 – >硬件 – >键盘 – >切换软件键盘应该可以解决这个问题。
尝试这个:
去:
iOS Simulator -> Hardware -> Keyboard
并取消选中
'Connect Hardware Keyboard'
或者简单地做: ⇧shift + ⌘Command + K
保持编码……… 🙂
由于模拟器设置,这也可能发生在Xcode 6 / iOS 8上:
Xcode 6:键盘不显示在模拟器中
我有同样的问题,但只在5s模拟器。 而且,我试图去模拟器 – >重置内容和设置。 这实际上解决了这个问题。
在这方面检查两件事情
1- userInteractionEnabled=true
2- textFielfd.editable = YES;
希望这会解决你的问题。
检查sockets是否已被映射,并将代表设置为控制器? 另外检查控制器是否有<UITextFieldDelegate>
设置。 发送文件检查员的屏幕截图,也许?
检查一下你是否在做类似的事情
[self.view endEditing:YES]; [self.myTextField resignFirstResponder];
或者你可能将第一个响应者分配给其他控件。
希望能帮助到你
我有类似的问题,但在实际的设备上。
我与苹果开发者技术支持(Apple DTS)交谈,他们告诉我这是一个快速的编译器或Xcode错误。
我做了一个小的解决方法。 不要以为这是一个最好的解决scheme,直到苹果解决这个问题,但现在没有任何问题的工作。
只需重写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) }
希望这会有助于某人。
如果你有更好的解决scheme,请在评论中告诉我。
谢谢
Giorgi的
还要确保你没有搞乱你的yourTextField.inputView
添加[textField canBecomeFirstresponder];
- 在iOS应用程序中deviseFacebook身份validation,同时访问安全的Web服务
- 我如何检查NSArray中的对象是否是NSNull?
- 按下UINavigationController的后退button时执行动作
- 我可以将图像设置为UINavigationBar的标题吗?
- View Controller Containment如何在iOS 5中工作?
- Xcode 6编辑器不能识别unit testing
- 从故事板中的外部xib文件加载视图
- 如何在Swift中用约束animationUIView?
- Swift + CoreData:不能在生成的NSManagedObject子类上自动设置可选属性