У меня была странная проблема, так как все остальное работает нормально. Внезапно, когда я скомпилировал свое приложение и получил эту проблему, когда я нажал на пробел UITextField
, появляется, но клавиатура не видна, и я ничего не могу вставить.
У меня была странная проблема, так как все остальное работает нормально. Внезапно, когда я скомпилировал свое приложение и получил эту проблему, когда я нажал на пробел UITextField
, появляется, но клавиатура не видна, и я ничего не могу вставить.
Далее будет исправлена проблема с клавиатурой
Симулятор → Оборудование → Клавиатура → Toggle Software Keyboard должна решить эту проблему.
Попробуйте следующее:
Перейти:
iOS Simulator -> Hardware -> Keyboard
И снимите флажок
'Connect Hardware Keyboard'
Или просто выполните: ⇧ shift + ⌘ Command + K
Сохранить кодирование.........:)
Это также может случиться с Xcode 6/iOS 8 из-за настроек симулятора:
У меня такая же проблема, но только на симуляторе 5s. И я попытался перейти к содержанию и настройкам симулятора → reset. Это фактически решило проблему.
в этом отношении проверьте две вещи
1- userInteractionEnabled=true
2- textFielfd.editable = YES;
Надеюсь, это решит вашу проблему.
Проверьте, отображается ли розетка, а делегат установлен на контроллер? Также проверьте, установлен ли контроллер <UITextFieldDelegate>
.
Отправить снимок экрана инспектора файлов, возможно?
проверить, если в какой-то момент вы делаете что-то вроде
[self.view endEditing:YES];
[self.myTextField resignFirstResponder];
или, возможно, вы назначаете первого ответчика другому элементу управления.
Надеюсь, что это поможет
У меня была аналогичная проблема, но на самом устройстве.
Я поговорил с технической поддержкой разработчика Apple (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)
}
Надеюсь, это поможет кому-то.
Если у вас есть лучшее решение, пожалуйста, дайте мне знать в комментариях.
Благодаря
Гиорги
Также убедитесь, что вы не возитесь с yourTextField.inputView
Добавить [textField canBecomeFirstresponder];