ios – 将触摸事件处理到一个UITableCell

ios – 将触摸事件处理到一个UITableCell,第1张

概述我有一些UITableViewCells,我可以在其中执行单击 *** 作. 当单击 *** 作开始时,单元格将展开,并将显示UIPickerView,UITextView或其他数据. (见示例图片) 再次单击TableCell时,单元格将折叠,并显示原始状态. 当我使用展开 *** 作单击UITableViewCell时,每个单元格都会展开.当我单击一个单元格时,我希望每个其他单元格都折叠,只展开单击的单元格. 题: @H_419_4@ 我有一些UItableVIEwCells,我可以在其中执行单击 *** 作.

当单击 *** 作开始时,单元格将展开,并将显示UIPickerVIEw,UITextVIEw或其他数据. (见示例图片)

再次单击tableCell时,单元格将折叠,并显示原始状态.

当我使用展开 *** 作单击UItableVIEwCell时,每个单元格都会展开.当我单击一个单元格时,我希望每个其他单元格都折叠,只展开单击的单元格.

题:

如何为扩展的表格单元格提供接收所有触摸事件的状态单元格. (成为整个屏幕的第一个响应者)并先关闭它,然后在关闭 *** 作后将click事件发送到相应的UItableVIEwCell.

我已经使UITextVIEw成为第一个响应者,它会在它加速后关闭键盘,但我希望表格单元格成为点击事件的处理程序.

示例代码

func togglePicker() {    //This function is called when the UItableCell is clicked.    canBecomeFirstResponder()    // Some code here which adds UIPickerVIEw,UITextVIEw or other data.    setNeedsLayout()}

我尝试了这个代码,但是这个单元只接收在这个单元格中触发但不在其边界之外的触摸事件.

示例图片

Orginal cell state

First cell is expanded

@H_419_4@解决方法 我实现了以下解决方案:

class CustomCell: UItableVIEwCell {   var delegate: CustomCellDelegate?   var focussed: Bool = false   function becomeFocussed() {      //Put some code here to change the design      setNeedsLayout()      focussed = true      delegate?.isFocussed(self)   }   function becomenormaleState() {      //Put some code here to change the design to the original state.      focussed = false      setNeedsLayout()   }}

每个Cell都有两个函数:becomeFocussed()和becomenormaleState().单击单元格时,应调用函数becomeFocussed().
此函数告诉代理该单元格已被选中.

在tableVIEwController中,函数isFocussed(cell:UItableVIEwCell),循环遍历当前tableVIEw的al单元格,为每个被聚焦的单元调用“becomenormaleState()”.

@H_419_4@ @H_419_4@ @H_419_4@ @H_419_4@ 总结

以上是内存溢出为你收集整理的ios – 将触摸事件处理到一个UITableCell全部内容,希望文章能够帮你解决ios – 将触摸事件处理到一个UITableCell所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1029659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存