在不破坏表格查看单元格点击功能的情况下点击iOS键盘

时间:2016-05-10 03:37:33

标签: ios swift uitableview uitextfield uitextview

当用户点击键盘外时,我想添加功能以关闭UITextFieldsUITextViews上的键盘。我有一个非常类似于iOS日历中的新事件的视图,其中有一些静态表格单元格,其中一些具有文本字段,一些发送到“显示”视图(例如"重复"新事件中的单元格日历应用程序)。

我尝试使用以下内容:

override func viewDidLoad() {
    super.viewDidLoad()

    //Looks for single or multiple taps. 
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
    view.addGestureRecognizer(tap)
}

//Calls this function when the tap is recognized.
func dismissKeyboard() {
    //Causes the view (or one of its embedded text fields) to resign the first responder status.
    view.endEditing(true)
}

但这打破了细胞的功能,这些细胞可以点击显示。我可以通过键盘按下"返回"来解决这个问题,但我不能用我的UITextView执行此操作,因为这会添加换行符。日历应用程序解除了UITextView中键盘的上下键盘,但我不知道如何自己添加此功能,因为我是iOS编程的新手。

解决此问题的任何解决方案?

3 个答案:

答案 0 :(得分:2)

在故事板中选择tableView。然后在属性检查器中找到键盘并设置为“以交互方式关闭”。这应该允许向下滑动以消除。

答案 1 :(得分:1)

  

日历应用程序解除了UITextView中的键盘,看起来像是向上和向下滑动

确实如此。这就是你应该做的。文本视图和表视图都是滚动视图。因此,通常的解决方案是将滚动视图的keyboardDismissMode设置为.Interactive.OnDrag。这就是日历的功能,这就是你应该如何做到的。

答案 2 :(得分:0)

另一种解决方案是,您可以在视图上添加UITapGestureRecognizer,并在点按视图时关闭键盘,如下所示。

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.view addGestureRecognizer:tapGesture];

-(void)handleTap:(UITapGestureRecognizer *)sender {
    //do stuff
}