我创建了一个日历应用程序,它使用SwiftCharts显示如下所示的时间栏:
我将图表栏嵌套在UITableViewCells中。当我点击单元格(而不是直接触发事件栏)时,我会导航到另一个视图。除非我直接点击酒吧本身,否则目前一切都很有效。似乎有一个tapGestureRecognizer或条形图上的东西覆盖了单元格点击。目前,当我点击栏stackFrameSelectionViewUpdater
运行时,这会更改栏的不透明度,但是,print语句永远不会运行。 我想在条形图上禁用tapRecognizer或点击触发segue 。知道我怎么做吗?
这是我目前的代码:
barStack = ChartStackedBarsLayer(xAxis: xAxis,
yAxis: yAxis,
innerFrame: innerFrame,
barModels: allDayEventBar,
horizontal: true,
barWidth: 500,
settings: chartviewSettings,
stackFrameSelectionViewUpdater: ChartViewSelectorAlpha(selectedAlpha: 1, deselectedAlpha: 0.75),
tapHandler: {tappedBar in
print("user tapped bar")
//run segue
})
关于这个问题的github帖子:StackBars in TableViewCell difficult to tap
答案 0 :(得分:1)
这可能是由于我在不知情的情况下通过在不同的ViewController中实例化图表而创建的分层问题引起的,然后将其附加到父ViewController内的视图中。虽然我从来没有解决过这个问题,但是找到了一个像这样的长按手势识别器的体面工作:
let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongPress(_:)))
longPressGesture.minimumPressDuration = 0.3
longPressGesture.delegate = self
self.usersTableVew.addGestureRecognizer(longPressGesture)
func handleLongPress(_ longPressGestureRecognizer: UILongPressGestureRecognizer) {
if longPressGestureRecognizer.state == UIGestureRecognizerState.began {
let touchPoint = longPressGestureRecognizer.location(in: self.view)
if let indexPath = self.usersTableVew.indexPathForRow(at: touchPoint) {
let cellData = self.homeTableData[indexPath.section][indexPath.row]
GlobalNavDelegate.homeVCDelegate!.selectedName = cellData.name
GlobalNavDelegate.homeVCDelegate!.segueToEditPersonCal()
}
}
}
如果您对此感到好奇,请查看github post