2017-09-15 1 views
1

Ich habe einen Kalender-App erstellt, die SwiftCharts verwendet eine Zeitleiste wie folgt angezeigt: enter image description hereSwiftCharts StackBars in TableViewCell schwer tippen

I Nest auf den Diagrammbalken innerhalb UITableViewCells. Wenn ich auf die Zellen (nicht direkt auf die Ereignisleiste) klicke, navigiere ich zu einer anderen Ansicht. Alles funktioniert momentan großartig, außer wenn ich direkt auf die Bars tippe. Es scheint, als gäbe es einen tapGestureRecognizer oder etwas in den Balken, das den Zellenabgriff außer Kraft setzt. Wenn ich derzeit auf die Leiste tippe, wird die stackFrameSelectionViewUpdater ausgeführt, die die Deckkraft der Leiste ändert, jedoch wird die Druckanweisung nie ausgeführt. ID möchte entweder deaktivieren, um tapRecognizer auf der Leiste zu aktivieren, oder über den Tap den Abschnitt auslösen. Irgendeine Idee, wie ich beides tun könnte?

hier ist mein aktueller Code:

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 
          }) 

Heres die Github Post über das Thema: StackBars in TableViewCell difficult to tap

Antwort

1

Dies wird durch eine Schichtung Problem kann unwissentlich verursacht wird, dass ich durch Instanziieren das Diagramm in einem anderen Viewcontroller erstellt und dann an eine View in einem übergeordneten ViewController anhängen. Obwohl ich es nie gelöst ein ein anständiger Arbeit um mit einem langen tap Gestenerkenner wie folgt gefunden:

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() 
      } 
     } 
    } 

Schauen Sie sich die github post wenn Ihr neugierig

Verwandte Themen