如何在表视图中关闭键盘iOS

时间:2015-03-19 19:28:46

标签: ios xcode swift

当用户触摸键盘时,有什么方法可以解除此键盘?我尝试了触摸开始方法,但这不起作用。 textfieldshouldreturn方法可以正常工作。我无法想到其他任何方法。有人可以帮助我在这里我真的很感激任何帮助。感谢

import UIKit


var courseCatalog : [String] = Array<String>()


class HomeViewController: UIViewController, UITextFieldDelegate , UITableViewDelegate{

    @IBOutlet var searchTextField: UITextField!


    override func viewDidLoad() {

        courseCatalog = ["Accounting", "Administration" , "American Studies" , "Anthropology" , "Arabic" , "Art" , "Aerospace Studies" , "American Sign Language" , "Biology" , "Child Development" , "Chemistry" , "Chinese" , "Criminal Justice", "Communication Studies" , "Computer Science", "Computer Engineering"]

        super.viewDidLoad()

        println(PFUser.currentUser())

        println("Home Tab View Controller")

        searchTextField.delegate = self
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return courseCatalog.count

    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

        cell.textLabel?.text = courseCatalog[indexPath.row]

        return cell

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {


        self.searchTextField.resignFirstResponder()

    }

    func textFieldShouldReturn(textField: UITextField!) -> Bool {

        searchTextField.resignFirstResponder()
        return true

    }





}

enter image description here

3 个答案:

答案 0 :(得分:3)

您应该在表格视图中添加一个点击手势识别器,以便在触发时关闭键盘:

//Somewhere in setup
UITapGestureRecognizer *viewTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyboard)];
viewTap.cancelsTouchesInView = FALSE;
[myTableView addGestureRecognizer:viewTap];

//Somewhere else in your class
-(void)closeKeyboard {

    [self.view endEditing:TRUE];
}

答案 1 :(得分:2)

如果您的背景是UIView,您可以在身份检查器中将其更改为UIControl,并将其发送到撤消第一个响应者的操作。

由于你的背景是一个UITableView,你应该在你的navigationBar中添加一个rightBarButtonItem,例如&#39;取消&#39;或者&#39;完成&#39;并将其发送给一个辞职第一响应者的方法*。

*您的第一响应者是用户输入的字段。

[textField resignFirstResponder];

夫特:

textField.resignFirstResponder();

答案 2 :(得分:0)

您可以尝试以下代码:

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

这将在&#39;返回&#39;时关闭键盘。键盘上按下按钮。

希望这可以帮到你。