我想在点击iOS-Chart时突出显示并显示值。我启用了突出显示而不启用了值,因为我只需要点击并突出显示
lineChartDataSet.drawValuesEnabled = false
lineChartDataSet.highlightEnabled = true
我需要这个功能吗?
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {}
答案 0 :(得分:0)
这是一个古老的问题,但我认为对于某些开发人员来说这仍然是现实。
如果要显示值,仅在用户触摸图表视图时显示气球或突出显示栏,则可能会触发UILongPressGestureRecognizer
的触摸事件。
我实例化了TappableLineChartView
中的新LineChartView
类。但是您可以以相同的方式使用BarChartView
。另外,如果您不想实例化新类,则可以在视图控制器中合并addTapRecognizer
和chartTapped
函数。
在我的示例中,我显示和隐藏值,但是以相同的方式,您可以显示和隐藏气球或其他标记。
class TappableLineChartView: LineChartView {
public override init(frame: CGRect)
{
super.init(frame: frame)
addTapRecognizer()
}
public required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
addTapRecognizer()
}
func addTapRecognizer() {
let tapRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(chartTapped))
tapRecognizer.minimumPressDuration = 0.1
self.addGestureRecognizer(tapRecognizer)
}
@objc func chartTapped(_ sender: UITapGestureRecognizer) {
if sender.state == .began || sender.state == .changed {
// show
let position = sender.location(in: self)
let highlight = self.getHighlightByTouchPoint(position)
let dataSet = self.getDataSetByTouchPoint(point: position)
dataSet?.drawValuesEnabled = true
highlightValue(highlight)
} else {
// hide
data?.dataSets.forEach{ $0.drawValuesEnabled = false }
highlightValue(nil)
}
}
}