I think your problem may be that you are setting the defaultRange - this is the range that will be displayed after the chart initially loads, or if the zoom is reset.
As jghazarian has mentioned, the setRangeWithMinimum:andMaximum:withAnimation: may be more appropriate for you. Setting the min or max to nil using this method will cause the chart to auto calculate a min/max for itself which sounds like what you are after.
I hope this helps! Let us know if you need any further advice