The code that existed after calling the delegate's willRepositionPopoverToRect method was incorrectly comparing pointers -- the code had #pragmas around it to stop the compiler warning, but it was a valid warning - the code wasn't doing what was intended. Changed this block to initialize the local variables passed by reference to the delete method, and then correctly check values that may have been returned. Made the assumption that if you pass in CGRectZero for the bounds, then a valid change in bounds would not be CGRectZero (seems reasonable).
The code that existed after calling the delegate's willRepositionPopoverToRect method was incorrectly comparing pointers -- the code had #pragmas around it to stop the compiler warning, but it was a valid warning - the code wasn't doing what was intended. Changed this block to initialize the local variables passed by reference to the delete method, and then correctly check values that may have been returned. Made the assumption that if you pass in CGRectZero for the bounds, then a valid change in bounds would not be CGRectZero (seems reasonable).