#swift #macos #charts #click #ios-charts
Вопрос:
Я использую диаграммы Дэниела (https://github.com/danielgindi/Charts) для создания гистограммы (macOS). Чтобы упростить это, пример демонстрационной гистограммы в основной ветви не реагирует на нажатие пользователем на панель (те же результаты с моей реализацией, поэтому я также протестировал демонстрацию. Если я смогу заставить демо работать, оно должно исправить и мое.)
func testDemo()
{
// Do any additional setup after loading the view.
let xArray = Array(1..<10)
let ys1 = xArray.map { x in return sin(Double(x) / 2.0 / 3.141 * 1.5) }
let ys2 = xArray.map { x in return cos(Double(x) / 2.0 / 3.141) }
let yse1 = ys1.enumerated().map { x, y in return BarChartDataEntry(x: Double(x), y: y) }
let yse2 = ys2.enumerated().map { x, y in return BarChartDataEntry(x: Double(x), y: y) }
let data = BarChartData()
let ds1 = BarChartDataSet(entries: yse1, label: "Hello")
ds1.colors = [NSUIColor.red]
data.append(ds1)
let ds2 = BarChartDataSet(entries: yse2, label: "World")
ds2.colors = [NSUIColor.blue]
data.append(ds2)
let barWidth = 0.4
let barSpace = 0.05
let groupSpace = 0.1
data.barWidth = barWidth
self.barChartView.xAxis.axisMinimum = Double(xArray[0])
self.barChartView.xAxis.axisMaximum = Double(xArray[0]) data.groupWidth(groupSpace: groupSpace, barSpace: barSpace) * Double(xArray.count)
// (0.4 0.05) * 2 (data set count) 0.1 = 1
data.groupBars(fromX: Double(xArray[0]), groupSpace: groupSpace, barSpace: barSpace)
self.barChartView.data = data
self.barChartView.gridBackgroundColor = NSUIColor.white
self.barChartView.chartDescription.text = "Barchart Demo"
}
У меня есть делегат, установленный в viewDidLoad, и следующая реализация
extension StatisticsBarChart: ChartViewDelegate {
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight)
{
print(entry)
print(highlight)
}
func chartValueNothingSelected(_ chartView: ChartViewBase)
{
print("nothing selected")
}}
1 из 10 раз фактически выбирается полоса. Но в большинстве случаев печатается «ничего не выбрано». Таким образом, диаграмма работает, и вызываются методы делегирования. Но нажать на панель практически невозможно. А иногда, нажав на одну панель, вы выделяете другую панель.
Чего мне не хватает для правильной работы выбора? Я должен быть в состоянии выбрать каждый бар, и каждый раз вызывается правильная функция делегирования.
Комментарии:
1. Обнаружена аналогичная проблема (если не та же самая), о которой сообщалось здесь: github.com/danielgindi/Charts/issues/4641
Ответ №1:
Похоже, это реальная ошибка в главной ветке версии 4.0.0
Возврат к версии 3.6.0 решил проблему