我有以下方案,需要帮助解决方案中的棘手情况
目前有一个Xcode项目正在使用EzSwipeController进行滑动(分页效果)。
在我的第一个ViewController中(此viewController是从我的自定义动态框架中获取的,作为我的要求的一部分) -
获取ViewController的代码:
userProfile.createProfileUI(userSession!) { result in
switch result {
case let .Success(profileViewController):
myDetailsVC = profileViewController //myDetailsVc is passed to EZSwipControllerDataSource array
default:
break
}
}
问题 -
在第一个ViewController中,有一个tableView,为少数单元格(电话号码)启用了canEditRowAtIndexPath。
因此,当我尝试滑动行时,EZSwipeController首先响应 因此,我无法编辑该行。
以下是发生的事情 - http://recordit.co/SOJgdeYchP
以下是应该发生的事情 - http://recordit.co/EBPSbjH31q
我该如何处理这个问题?有没有办法在我尝试编辑行时覆盖默认的滑动控制器操作?
请帮忙!
答案 0 :(得分:0)
将滑动手势识别器附加到层次结构中的父级。
如果您正在使用UITableViewController,请将其替换为内置UITableView的UIViewController。然后将手势识别器拖到Storyboard中的视图控制器上,它将附加到UIViewController的内容视图而不是UITableView。
虽然在一天结束时,这本质上是一种有缺陷的方法,因为如果您在页面上没有任何滑动手势的元素,那么在应用中滑动翻页也是可行的。 。如果您这样做,即使您编写了一个变通方法来为视图控制器中的元素(在本例中为表格视图单元格)制作手势识别器,而不是页面翻转滑动手势,这会产生不一致的用户体验。
我的建议:完全没有使用表格视图来表示这样的表格。除了上述机械用户体验问题之外,从用户感知的角度来看,没有任何东西在视觉上表明这是一个表格视图而不仅仅是滚动视图,所以没有任何迹象表明用户滑动动作(删除)可用。改为使用滚动视图,并采用不同的方法删除(删除始终可见的按钮,删除仅在用户点击某处编辑后可见的按钮等)。