J'aimerais avoir la valeur de la ligne en temps réel car l'utilisateur iPhone tourne une roue dans un uipickerview (non seulement lorsque la roue s'installe sur une rangée particulière). J'ai examiné la sous-classement Uipickerview, puis remplace la méthode MouseDown, mais je ne pouvais pas obtenir cela pour travailler. Toute suggestion serait très appréciée. P>
3 Réponses :
Le uipickerview code> Les dimensions sont assez cohérentes. Au lieu de la sous-classement, vous pouvez peut-être superposer un
uiview code> de votre choix au-dessus de la vue de choix, à partir duquel vous pouvez suivre et mesurer les mouvements de traînée, avant de passer ces touches à la vue de la sélection. p>
Sauf que, alors vous devriez inverser l'ingénieur, la quantité de filature qui a eu lieu pour une traînée donnée, après avoir été laissée aller ...
Je ne suis pas sûr que la question soit différente de l'approche de sous-classement. Au moins avec l'approche uiview code>, son code pourrait être réutilisé plus facilement à d'autres fins.
Vrai, toute approche qui n'a pas regardé qu'à la saisie de la vue de cueillette aurait le même problème.
Peut-être essayez peut-être de mettre en œuvre la méthode de déléguée:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
Encore plus facile: dans cette méthode, appelez (NSInteger) Composant: (NSInteger) Composant, et vous obtiendrez la ligne actuelle et vous pourrez récupérer sa valeur sans calculer les décalages ni nous inquiéter de quelle manière le sélecteur filait.
Vous pouvez trouver UiscrollView dans Uipickerview hierarchy par la méthode suivante: Mise en œuvre et configuration Uiscrollviewelegate: P> func scrollViewDidScroll(scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y
let index = Int(offset/itemHeight)
if index >= 0 && index < items.count {
let item = items[index]
// do something with item
}
}