2010-11-09 8 views
1

J'ai un UIPickerView qui apparaît dans un UIPopoverController au sommet d'une vue graphique. Lorsque la vue graphique est statique (sans représenter les données entrantes), l'UIPickerView est très réactif. Toutefois, lorsque je représente les données entrantes, l'UIPickerView ne répond pas.UIPickerView lent à répondre quand beaucoup de rendu se passe

À l'intérieur du contrôleur UIPopoverController est mon MeasurementViewController (qui permet à l'utilisateur de changer la mesure étant tracée le long d'un des axes du graphique). MeasurementViewController a un bouton "Terminé" et un UIPickerView. Ce qui est étrange, c'est que je sélectionne un composant d'une rangée dans le sélecteur, puis j'appuie sur "Terminé". Mais quand j'enregistre ces appels, je vois -doneAction: appelé longtemps avant que -pickerView de MeasurementViewController: didSelectRow: inComponent: s'appelle.

La réactivité de UIPickerView est-elle entravée par le rendu (OpenGL-ES) dans la vue qui le précède?

Répondre

1

Ça sonne, oui. Vous pouvez mettre en pause le graphique (peut-être réduire l'affichage du graphique lui-même) pendant que le popover est ouvert. Je suppose que la raison pour laquelle votre -pickerView:didSelectRow:inComponent: ne se fait pas appeler immédiatement est à cause de l'animation de décélération/alignement que la vue sélecteur fait - il n'appelle probablement pas la méthode déléguée tant qu'elle n'est pas installée sur une ligne, ce qui, si en retard, peut être un moment après que vous avez appuyé sur le bouton "Terminé" (qui répond instantanément à un contact).

+0

Merci. Je pense que tu as raison. Je viens de vérifier mon application sur iPhone (accordée, c'est un iPhone 4) mais le MeasurementViewController est poussé sur la pile de navigation, donc le graphique n'est plus visible. En fait, son UIViewController n'est plus actif. Et sur iPhone, UIPickerView est réactif. – westsider