在UITableViewCell里面的UITextView,当tableView滚动时如何重新签名textview的firstResponder?

时间:2016-08-22 11:48:21

标签: ios swift uitableview uitextview first-responder

我创建了一个自定义UITableViewCell,并在此原型单元格中放置了UITextView。当我单击此textView时,键盘可以自动弹跳。但是,如果我想隐藏键盘,我必须单击Return键。这不方便。

这是问题所在。 当我滚动桌面视图时,如何重新设置textView' firstResponder以隐藏键盘。

cellForRowAtIndex方法如下。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = UITableViewCell()
    if(indexPath.section == 0){
        cell = self.tableView.dequeueReusableCellWithIdentifier("InputCell")!
        let textView = cell.viewWithTag(102) as! UITextView
        textView.editable = true
        textView.keyboardType = UIKeyboardType.Default
        textView.delegate = self
        textView.targetForAction(#selector(FeedBackViewController.getTextViewInsideCell(_:)), withSender: textView)
    }
    if(indexPath.section == 1){
        cell = self.tableView.dequeueReusableCellWithIdentifier("ConfirmButtonCell")!
        let label = cell.textLabel
        label?.text = "send"
        label?.textAlignment = NSTextAlignment.Center
        label?.textColor = UIColor.redColor()
    }
    return cell
}

以下是我实施的一些方法。

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool{
    if(text == "\n"){
        textView.resignFirstResponder()
        return false
    }
    return true
}

我不知道如何实现这个方法。

func scrollViewWillBeginDragging(scrollView: UIScrollView) {

}

3 个答案:

答案 0 :(得分:6)

您可以尝试在viewDidLoad上实现此功能,当tableview开始拖动时它会自动关闭键盘:

tableView.keyboardDismissMode = .Interactive.OnDrag

答案 1 :(得分:1)

UITableView继承的

UIScrollView符合UIScrollViewDelegateProtocol。尝试覆盖scrollViewDidScroll函数并从textview中退出第一个响应者。

确保将tableView的委托分配给视图控制器,然后添加以下代码

func scrollViewDidScroll(scrollView: UIScrollView) {
    yourTextView.resignFirstResponder()
}  

根据docs scrollViewDidScroll

  

当用户在接收者中滚动内容视图时告诉代理人。

<强>更新

另一种辞职第一响应者的方法是为您的观点设置endEditingtrue

  

使视图(或其中一个嵌入的文本字段)重新签署第一个响应者状态。

func scrollViewDidScroll(scrollView: UIScrollView) {
    self.view.endEditing(true)
} 

答案 2 :(得分:1)

很容易你也可以用故事板做同样的事情

打开故事板

选择tableview或集合视图

并选择拖动 enter image description here

相关问题