解除定制UITextField上的键盘

问题描述:

我正在使用TextFieldEffects定制UITextFields。创建文本框是非常简单的..解除定制UITextField上的键盘

class ViewController: UIViewController { 

    override func viewDidLoad() { 
    super.viewDidLoad() 
     let textField = HoshiTextField(frame: textFieldFrame) 
     textField.placeholderColor = .darkGrayColor() 
     textField.foregroundColor = .lightGrayColor() 

     view.addSubView(textField) 
    } 
} 

解雇的键盘,我试图做什么,我通常会做,但遗憾的是没有运气。

func textFieldShouldReturn(textField: HoshiTextField) -> Bool { 
    self.view.endEditing(true) 
    return false 
} 

func dismissKeyboard() { 
    view.endEditing(true) 
} 

您有什么建议吗?

确认的UITextFieldDelegate协议,您的ViewController并分配textField.delegate = self,然后执行以下的委托方法:

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
    } 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    self.view.endEditing(true) 
    } 

为了更好的理解,请看看我的一小段代码片段enter image description here

+0

通过添加委托=自我,'textFieldShouldReturn( )'开始工作。但是,'dismissKeyboard()'(单击外部)仍然不起作用。 – senty

+0

实现触摸开始方法 覆盖FUNC的touchesBegan(触摸:设置,withEvent事件:的UIEvent?){ self.view.endEditing(真) } – iMuzahid

+0

能否请您包括在你的答案,所以我可以接受它作为正确答案? – senty

为你的textField设置代理,也许它会工作!

+0

我该怎么办呢?它嵌入在UIViewController中。我尝试使用textField.delegate = self,但它不让我这样做,因为self是UIViewController。做这件事的正确方法是什么?谢谢 – senty

+0

设置类似于: 'class YourViewController:UIViewController,UITextFieldDelegate' refer:http://sourcefreeze.com/uitextfield-and-uitextfield-delegate-in-swift/ –

class ViewController: UIViewController, UITextFieldDelegate //add this protocol 
{ 
... 
    func ... { 
    let textField = HoshiTextField(frame: textFieldFrame) 
    textField.placeholderColor = .darkGrayColor() 
    textField.foregroundColor = .lightGrayColor() 
    textField.delegate = self 
    } 
} 
+0

我也试过,但我收到错误“Can not分配'YourViewController'类型的值来键入'UITextFieldDelegate?'“什么可能是解决方法? – senty

+0

@senty你可以请发布错误行吗?谢谢 – anhtu

+0

'textField.delegate = self'这是发生错误的地方。我认为答案是在顶部定义它(就像我在Storyboard上创建UITextField一样,我会按Ctrl +拖动,但是当我以编程方式创建它时,也许我需要在顶部定义它)。你怎么看? – senty