web-dev-qa-db-ja.com

UITextFieldをタップするとUIKeyboardが表示されない

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

他のすべてがうまく機能しているので、私は奇妙な問題に陥っていました。アプリケーションをコンパイルしてこの問題が発生したとき、UITextFieldの空白がポップアップするときに突然ですが、キーボードが表示されず、何も入力できません。

48
user3518271

以下はキーボードの問題を修正します

シミュレータ->ハードウェア->キーボード->ソフトウェアキーボードの切り替えは、この問題を解決するはずです。

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

98
Shekhu

これを試して:

後藤:

iOS Simulator -> Hardware -> Keyboard 

そしてチェックを外します

'Connect Hardware Keyboard'

または、単純に: ⇧ shift + ⌘ Command + K

コーディングを続ける......... :)

47

これは、シミュレーターの設定が原因でXcode 6/iOS 8でも発生する可能性があります。

Xcode 6:シミュレーターにキーボードが表示されません

7
MaryAnn Mierau

私は同じ問題を抱えていますが、5sシミュレーターでのみです。そして、シミュレーター->コンテンツと設定をリセットしようとしました。実際に問題を解決しました。

3
Fred Hsiao

また、yourTextField.inputViewをいじらないようにしてください。

2
Joe

この点で2つのことを確認してください

1 -userInteractionEnabled=true

2- textFielfd.editable = YES;

これで問題が解決することを願っています。

2
Macrosoft-Dev

ある時点で次のようなことをしているかどうかを確認します

[self.view endEditing:YES];
[self.myTextField resignFirstResponder];

または、最初のレスポンダーを他のコントロールに割り当てています。

それが役に立てば幸い

2
washloops

アウトレットがマップされ、デリゲートがコントローラーに設定されているかどうかを確認しますか?また、コントローラーに<UITextFieldDelegate>セット。ファイルインスペクターのスクリーンショットを送信しますか?

1
rbs

私は同様の問題を抱えていましたが、実際のデバイスでした。
Apple開発者テクニカルサポート(Apple DTS)と話しましたが、彼らはSwiftコンパイラーまたはXcodeのバグだと言いました。
少しの回避策を行いました。 Appleがこの問題を解決するまでこれが最良の解決策であるとは思わないが、今は問題なく動作する。

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

これが誰かに役立つことを願っています。
より良い解決策があれば、コメントで教えてください。
ありがとう
ジョルジ

1
Rendel

[textField canBecomeFirstresponder];を追加

0
Vineesh TP