TableViewCell 中的 SwiftCharts StackBars 难以挖掘
SwiftCharts StackBars in TableViewCell difficult to tap
我创建了一个日历应用程序,它使用 SwiftCharts 来显示这样的时间栏:
我将图表栏嵌套在 UITableViewCells 中。当我点击单元格(不是直接点击事件栏)时,我导航到另一个视图。目前一切都很好,除非我直接点击栏本身。似乎有一个 tapGestureRecognizer 或覆盖单元格点击的栏上的东西。目前,当我点击栏时,stackFrameSelectionViewUpdater
运行,这会改变栏的不透明度,但是,打印语句永远不会运行。 我想禁用栏上的 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
})
这里是关于这个问题的githubpost:StackBars in TableViewCell difficult to tap
这可能是我在另一个 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
我创建了一个日历应用程序,它使用 SwiftCharts 来显示这样的时间栏:
我将图表栏嵌套在 UITableViewCells 中。当我点击单元格(不是直接点击事件栏)时,我导航到另一个视图。目前一切都很好,除非我直接点击栏本身。似乎有一个 tapGestureRecognizer 或覆盖单元格点击的栏上的东西。目前,当我点击栏时,stackFrameSelectionViewUpdater
运行,这会改变栏的不透明度,但是,打印语句永远不会运行。 我想禁用栏上的 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
})
这里是关于这个问题的githubpost:StackBars in TableViewCell difficult to tap
这可能是我在另一个 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