En algún momento han tenido una vista mas grande que el alto del iPhone (o iPad)?, pues la solución es agregar un UIScrollView, el cual contendra todas las vistas que necesitamos. Esto es muy sencillo, el problema es cuando una de nuestras vistas es un UIPickerView. Recientemente estuve trabajando en un proyecto donde justo sucedio esto, el problema fue que en un iPhone 4 con iOS 4.3.3 el usuario intentaba escoger uno de los datos del UIPickerView, pero lo que la App hacia, era subir/bajar (scroll) la vista!
Lo que sucede es que en una UIScrollView por default la propiedad canCancelConte
1 | self.scrollView.canCancelContentTouches = NO; |
Tambien tenemos que tomar en cuenta que la propiedad de delaysContentTouches del UIScrollView, por default tambien es YES, lo que le dice esta propiedad a la vista es que espere un momento hasta que se defina si el evento que se quiere manejar es un scroll, por lo que si existen otras vistas que pueden subir/bajar (scroll) puede originarse un conflicto a la hora de determinar que vista debe manejar el evento. Esto tambien se resuelve con una linea de codigo:
1 | self.scrollView.delaysContentTouches = NO; |
Y con esto nos evitamos el problema de eventos no deseados en las vistas.
Espero les ayude. Saludos!

