UICollectionViewCell

时间:2017-04-13 14:47:48

标签: ios swift cocoa-touch uikit

我基于UICollectionView聊天用户界面。非常常见的UI看起来像iMessage。 我有逻辑,使用

处理聊天消息气泡的点击
collectionView(_:didSelectItemAt:)

我想在此集合视图的背景中添加点击手势识别器以关闭键盘。

所以我想在我的bubbleCell上自定义点击测试,这样我就可以点按气泡来调用

collectionView(_:didSelectItemAt:)

并点击空白区域以调用关闭键盘逻辑。

我该怎么做才能实现这种行为?

UPD。一些代码

如果我向ChatViewController.view添加点击手势

func viewDidLoad() {
    // ...
    let tap = UITapGestureRecognizer(target: self, action: #selector(ChatViewController.dismissKeyboard))
    self.view.addGestureRecognizer(tap)
}

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

此代码永远不会被调用

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    // Handle tap on cell
}

1 个答案:

答案 0 :(得分:1)

我认为您需要在cancelTouchesInView上将UITapGestureRecognizer设置为false才能识别两个点击(在Collection View和Tap Gesture Recognizer上)。

let tap = UITapGestureRecognizer(target: self, action: #selector(ChatViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
self.view.addGestureRecognizer(tap)