- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用库调用 Page-Menu ( https://github.com/PageMenu/PageMenu ),它允许我在 View Controller 中添加 subview Controller 。我可以在这个 View Controller 之间滚动。在我使用 UITableView 的 subview Controller 之一中。我正在使用 UITableViewRowAction 删除单元格但是。不知道为什么,但表未检测到滑动手势。如果我禁用页面菜单滚动然后 TableView UITableViewRowAction 工作。我在谷歌搜索了很多关于这个的内容。我没有找到任何解决方案。谢谢
最佳答案
在使用了一些库后,我发现问题与在 CAPSPageMenu
View Controller 中禁用 ScrollView 手势识别器有关。
按照这些步骤在其中一个 subview Controller 中启用 TableView 编辑。
像这样为 PageMenu
目标子类化 UIScrollView
:
class CustomScrollView : UIScrollView, UIGestureRecognizerDelegate {
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
gestureRecognizer.cancelsTouchesInView = false
return true
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return ((self.delegate as! CAPSPageMenu).gestureDelegate?.gestureRecognizerShouldRecognizeSimultaneouslyWith(gestureRecognizer, otherGestureRecognizer: otherGestureRecognizer))!
}
}
然后在 CAPSPageMenu
中,替换:
让 controllerScrollView = UIScrollView()
与
让 controllerScrollView = CustomScrollView()
在同一个文件中声明一个协议(protocol):
@objc public protocol CustomGestureDelegate {
func gestureRecognizerShouldRecognizeSimultaneouslyWith(_ gestureRecognizer: UIGestureRecognizer, otherGestureRecognizer: UIGestureRecognizer) -> Bool
}
并将此属性添加到 CAPSPageMenu
:
open weak var gestureDelegate: CustomGestureDelegate?
在这里,我将 controllerArray
作为 ViewController
中的一个属性,这样我们以后就可以用 TableView 过滤掉 View Controller 。
var controllerArray : [UIViewController] = []
然后使 ViewController
符合 CustomGestureDelegate
和 ViewController: UIViewController, CustomGestureDelegate
,并在 viewDidLoad
中设置:
pageMenu!.gestureDelegate = self
在 ViewController
(您的容器 View Controller )中实现此功能:
func gestureRecognizerShouldRecognizeSimultaneouslyWith(_ gestureRecognizer: UIGestureRecognizer, otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if pageMenu?.currentPageIndex == 0 {
return (controllerArray[0] as! CustomGestureDelegate).gestureRecognizerShouldRecognizeSimultaneouslyWith(gestureRecognizer, otherGestureRecognizer: otherGestureRecognizer)
}
return true
}
您可以为其他具有 TableView 的 subview Controller 添加类似的逻辑。这里我假设只有初始 View Controller 有一个 TableView 。
通过添加以下实现使您的 subview Controller 符合 CustomGestureDelegate
:
class TestTableViewController: UITableViewController, CustomGestureDelegate {
func gestureRecognizerShouldRecognizeSimultaneouslyWith(_ gestureRecognizer: UIGestureRecognizer, otherGestureRecognizer: UIGestureRecognizer) -> Bool {
let location = gestureRecognizer.location(in: self.view)
let path = self.tableView.indexPathForRow(at: location)
if path != nil {
gestureRecognizer.isEnabled = false
}
gestureRecognizer.isEnabled = true
return true
}
}
希望对你有帮助。
更新:
查看 https://github.com/LemonSpike/PageMenu查看 PageMenuDemoStoryboard
目标的演示。
关于ios - 父 Controller 阻止子 TableView UITableViewRowAction swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45709445/
我想让用户能够在我执行删除滑动操作时删除表格单元格,但我不知道如何实际删除所选单元格!如您所知,我正在使用 Swift 和 Xcode 6.3.1 编程 var deleteAction = UITa
我有下面的代码,它将处理 tableViewCell 中的右侧滑动,当用户在具有discussionURL的正确单元格上向右滑动时,如果用户在没有这个内容的单元格上向右滑动,它工作正常URL 然后 U
当 UITableViewRowAction 滑动发生时,与该操作关联的单元格背景会将其背景颜色更改为白色,而不是像通常那样的黑色。换句话说,您可以在单元格圆角半径后面看到的颜色随着滑动操作而变化。请
使用UITableViewRowAction非常棒。有件事让我烦恼,我想保留原始单元格 textLabel 的一部分,以便我亲爱的用户知道他们要删除的内容。 通过使用UITableViewRowAct
我用谷歌搜索了两个多小时,没有发现任何有用的东西:我有一个带有 editActions 的 tableView 。当我按下该操作时,我会显示一个包含附加信息/需要确认的警报 Controller 。
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyO
我已经创建了自定义操作: public override UITableViewRowAction[] EditActionsForRow(UITableView tableView, NSIndex
我在 中创建了一个 UITableViewRowAction 的实例 -(NSArray *)tableView:(UITableView *)tableView editActionsForRow
我正在使用 UITableViewRowAction iOS 8 Beta 2+ 中的方法在我的表格中的一行上滑动时添加自定义按钮。我不知道如何处理点击事件,它目前只是让我的应用程序崩溃了。我尝试了以
使用 UITableViewRowAction 可以在每一行上设置不同数量的按钮吗?例如,我希望一行包含 3 个操作,其余行包含 2 个操作。这可能吗? func tableView(tableVie
我的源代码中有 3 个 UITableViewRowAction 的,如下所示: - (NSArray *)tableView:(UITableView *)tableView
我想编辑表格的 UITableViewRowAction。我的单元格有圆边和边框,我想编辑 RowAction 的样式以匹配我的单元格的样式。 据我所知,目前只有 backgroundColor、标题
我想做一个像邮件应用一样的 cell 滑动 Action 。 我将 UIImage 设置为行操作的 backgroundColor。 action.backgroundColor = [UIColo
我有一个 UITableView,我使用 UITableViewDelegate 和 UITableViewDataSource 在 Controller 中进行管理。在此表中,我有一个自定义单元格,
那里有几个类似的问题,但我认为应该有一个最新的 iOS 10 答案,使用 Swift3,不使用私有(private) API,也不依赖于你限制你的图标到 unicode 表情符号。 我现在有包含三个操
我想在 Swift 的 tableviewCell 的滑动 Action 中放置图标(图像)而不是文本。 但我不知道如何用图片代替标题文字? 我的代码如下: func tableView(tableV
我有一个自定义的 UITableViewRowAction 设置和工作。我唯一无法解决的是如何在选择了一个 Action 后关闭 UITableViewRowAction。我确定我错过了一些非常明显的
我使用objective-c 编程iPhone App。版本在 iOS 8.1 之后。我的 UITableViewCell 中有一些 UITableViewRowAction,我在点击其中一个 UIT
这个问题已经有答案了: How to change UITableViewRowAction title color? (11 个回答) 已关闭 7 年前。 我想更改 UITableViewRowAc
我已经使用 UITableViewRowAction 创建了 UITableView:编辑和删除。当按下删除键时,确认应该显示为 UIAlertController。如果用户按删除,单元格应被删除,如
我是一名优秀的程序员,十分优秀!