2017-05-29 8 views
0

ユーザーがグラフをクリックすると、配列に挿入するx-y値を知ることができるメソッドを実装する方法がありますか?ユーザーがチャート - 'LineChartView'(iOS-Charts)をクリックしたときのポイントを追加する

func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {} 

をしかし、この方法は、私がすでに持っている最も近い点を示しています

は、私が使用しようとしています。

は、私が使用している場合:

@IBOutlet var chart: LineChartView! 

let tap = UITapGestureRecognizer(target: self, action: #selector(self.longTouch(_:))) 
self.chartView.addGestureRecognizer(tap) 

func touch(_ sender: UIGestureRecognizer) { 
    let touchPoint = sender.location(in: self.chart) 
} 

「タッチポイント」は返す絶対ビューのX-Yおよびチャートに関連していません。

誰かが私を助けることができますか?ありがとう!私はビューにジェスチャー認識を加える解決した

+1

'chartValueSelected'メソッドからあなたが訴えている値はどれですか? 'entry.x'を使っていますか? – CodeChanger

+0

はい、私は 'entry.x'と 'entry.y'を使用しています。両方とも、以前に挿入された最も近いポイントを取ります。ありがとう! – ventuz

+0

はい、この方法はX&Yの最寄りの点を返すだけで、なぜ絶対タッチポイントが必要なのか分かりますか? – CodeChanger

答えて

0

:私はLineChartViewにinerith valueForTouchPoint(point: _)を使用しましたジェスチャー方法で

// Gesture Recognizer to add a new value 
func addGesture() { 
    let gesture = UILongPressGestureRecognizer(target: self, action: #selector(gestureRecognizerShouldBegin(_:))) 
    gesture.minimumPressDuration = 0.3 
    _chartView?.addGestureRecognizer(gesture) 
} 

func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { 

    if gestureRecognizer.state == .began { 

     // Recognize the location in the view 
     let touchLocation = gestureRecognizer.location(in: self._chartView) 
     // The 'x-y' value where user touch the view 
     let touchedPoint: CGPoint? = self._chartView?.valueForTouchPoint(point: touchLocation, axis: .right) 

     guard let point = touchedPoint else { return false } 

     // save the value... 

    return true 
} 

また、グラフをズームまたはパンすると、メソッドは正しい値のx-y値を返します。

これが誰かを助けることを願っています!

関連する問題