2015-05-07 35 views
0

textview停靠在底部(如消息应用程序)。但是,当用户点击textView外部时,键盘不会解散。关闭带有inputAccessoryView的键盘

import UIKit 
class CommentsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet var commentBar: UIView! 

    @IBOutlet var commentTextField: UITextField! 

    override var inputAccessoryView: UIView { 
     return commentBar 
    } 

    override func canBecomeFirstResponder() -> Bool { 
     commentBar.removeFromSuperview() 
     return true 
    } 

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

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
     self.view.endEditing(true); 
     commentTextField.resignFirstResponder() 
    } 
+0

检查您的视图是否启用了用户交互。 –

+0

@BrittoThomas是用户互动已启用 – Onichan

回答

1

无需在canBecomeFirstResponder方法中删除您的commentBar。这将在每次键盘退出时调用。

尝试一下这样的事情。

class ViewController: UIViewController { 
@IBOutlet var commentBar: UIView! 
@IBOutlet var commentTextField: UITextField! 

override func viewDidLoad() { 
     super.viewDidLoad() 
     commentBar.removeFromSuperview() 
    } 
override var inputAccessoryView: UIView { 
     return commentBar 
    } 

override func canBecomeFirstResponder() -> Bool { 
     return true 
    } 

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

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
     self.view.endEditing(true); 
     commentTextField.resignFirstResponder() 
    } 

} 
+0

谢谢,我给了这个尝试,但它仍然没有解雇键盘。另外,如果我呈现另一个视图控制器(如登录)并返回,那么'commentBar'完全消失。 – Onichan

+0

检查func touchesBegan是否正在调用,使用断点。 –

+0

同时检查textField与IBOutlet的连接。 –