ios - textfielddidchange - xcode keyboardtype




點擊UITextField時UIKeyboard不顯示 (7)

以下將解決鍵盤問題

模擬器 - >硬件 - >鍵盤 - >切換軟件鍵盤應解決此問題。

我遇到了一個奇怪的問題,因為其他所有事情都很好。 突然間,當我編譯我的應用程序並遇到這個問題時,當我點擊UITextField空白區域彈出,但鍵盤不可見,我無法輸入任何內容。


在這方面檢查兩件事

1- userInteractionEnabled=true

2- textFielfd.editable = YES;

希望這能解決你的問題。


我有類似的問題,但在實際設備上。
我與蘋果開發者技術支持(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的


檢查在某些時候你是否正在做類似的事情

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

或者你可能正在將第一響應者分配給其他控件。

希望能幫助到你


添加[textField canBecomeFirstresponder];



還要確保您沒有弄亂yourTextField.inputView





uitextfield