1

I have a UIPickerView that appears in a UIPopoverController atop a graph view. When the graph view is static (not graphing incoming data), then the UIPickerView is very responsive. However, when I graphing incoming data, the UIPickerView is very unresponsive.

Inside the UIPopoverController is my MeasurementViewController (which allows user to change measurement being plotted along one of the graph axes). MeasurementViewController has a "Done" button and a UIPickerView.

What is strange is that I select a component from a row in the picker and then press "Done". But when I log these calls, I am seeing -doneAction: called long before MeasurementViewController's -pickerView:didSelectRow:inComponent: is called.

Is the UIPickerView's responsiveness being impeded by the (OpenGL-ES) rendering in the view behind it?

westsider
  • 4,967
  • 5
  • 36
  • 51

1 Answers1

1

Sounds like it, yeah. You might want to pause graphing (maybe dimming the graph display itself) while you've got the popover open. I would guess that the reason your -pickerView:didSelectRow:inComponent: isn't getting called right away is because of the animated deceleration/alignment stuff that the picker view does—it probably doesn't call the delegate method until it's settled on a row, which, if it's lagging, could be a while after you've hit the "Done" button (which responds instantaneously to a touch).

Noah Witherspoon
  • 57,021
  • 16
  • 130
  • 131
  • Thanks. I think you're right. I just checked my app on iPhone (granted, it's an iPhone 4) but the MeasurementViewController gets pushed on to navigation stack, so graph is no longer visible. In fact, its UIViewController is no longer active. And on iPhone UIPickerView is responsive. – westsider Nov 09 '10 at 22:05