Me gustaría obtener el valor de la fila en tiempo real a medida que el usuario del iPhone hace girar una rueda en un UIPickerView (no solo cuando la rueda se instala en una fila en particular). Intenté subclasificar UIPickerView y luego anular el método mouseDown, pero no pude hacer que esto funcionara. Cualquier sugerencia sería muy apreciada.UIPickerView: ¿obtiene valor de fila mientras gira?
Respuesta
Las dimensiones UIPickerView
son bastante consistentes. En lugar de subclasificarlo, tal vez podría superponer un UIView
propio en la parte superior de la vista del selector, desde la cual puede rastrear y medir los movimientos de arrastre, antes de pasar esos toques a la vista del selector.
Tal vez intente implementar el método delegado:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
Se podía tratarla como una pasarela (de paso hacia atrás el parámetro reusingView), pero cada vez que se llama usted sabría que la vista se viene en la pantalla como el usuario se desplazó, entonces usted podría calcular cuántas vistas se compensaban con respecto a esta vista central.
Esto funcionó! Gracias Kendall. Muy inteligente. – user183266
Aún más fácil: en ese método, llame al componente (NSInteger) selectedRowInComponent: (NSInteger), obtendrá la fila actual y podrá recuperar su valor sin calcular las compensaciones ni preocuparse por la forma en que gira el selector. –
puede encontrar UIScrollView en la jerarquía UIPickerView por el siguiente método:
func findScrollView(view:UIView) -> UIScrollView? {
if view is UIScrollView {
return view as? UIScrollView
}
for subview in view.subviews {
if subview is UIView {
let result = findScrollView(subview as UIView)
if result != nil {
return result
}
}
}
return nil
}
implementar y configuración UIScrollViewDelegate:
let scrollView = findScrollView(pickerView)
if scrollView != nil {
scrollView!.delegate = self
}
y detectar corriente elemento seleccionado:
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
}
}
esto no funciona –
- 1. ¿Una uipickerview de iphone que gira horizontalmente?
- 2. Color de fila UIPickerView
- 3. UIPickerView desactivar selección de fila
- 4. Seleccionar fila Después de cargar UIPickerView
- 5. Obteniendo System.Data.DataRowView mientras obtiene el valor de ComboBox
- 6. iphone SDK: ¿Cómo establecer el valor inicial de un UIPickerView?
- 7. desea mostrar el grosor de un elemento mientras gira
- 8. UIScrollView deshabilita el desplazamiento mientras gira en iPhone/iPad
- 9. ¿Puedo desplazarme programáticamente a la fila deseada en UIPickerView?
- 10. Obtener la fila seleccionada en UIPickerView para cada componente
- 11. valor obtener de fila actualizada
- 12. Recargar datos en UIPickerView
- 13. jQuery: ¿obtiene un valor de campo de entrada de la última fila en una tabla?
- 14. UIPickerView - la selección de la 1ra fila no llama a didSelectRow
- 15. @El objeto cableado obtiene un valor nulo en una clase, mientras está correctamente conectado en otra
- 16. UIPickerView Font
- 17. UIPickerView reloadData
- 18. Deshabilitar UIPickerView
- 19. ¿Insertar fila en DB mientras usa multiprocesos?
- 20. UIPickerView con NSDictionary
- 21. SSRS: ¿Obtiene valores de una fila particular de DataSet?
- 22. UIPickerView con Multiline UILabel
- 23. ¿Obtiene el valor del boundfield oculto? ASP.NET
- 24. Android ProgressDialog no gira
- 25. UIPickerView muestra títulos incorrectos
- 26. Anulación de la selección resaltada en UIPickerView
- 27. diálogo Mostrar rueda que gira, mientras que la carga de datos en Android
- 28. cómo agregar UIPickerView en UIActionSheet
- 29. MPMoviePlayerViewController no gira automáticamente
- 30. UIViewController no gira automáticamente
Excepto que entonces tendrías que realizar una ingeniería inversa de la cantidad de vueltas que tuvo lugar para cualquier arrastre dado, una después de haberlo dejado ir ... –
No estoy seguro de que el problema sea diferente con el enfoque de subclases. Al menos con el enfoque 'UIView', su código podría reutilizarse más fácilmente para otros fines. –
Es cierto, cualquier enfoque que mirara solo la entrada a la vista del selector tendría el mismo problema. –