FWIW, похоже, что мой конкретный тайм-аут происходил из-за ошибки javascript в редких сценариях. Вы можете попробовать обернуть JS в try / catch или улучшить его, чтобы сделать его более устойчивым к ошибкам.
Подробнее: я использовал следующую строку JS:
NSString* js = @"document.getElementById(\"main\").offsetHeight";
int height = [[_web_view stringByEvaluatingJavaScriptFromString:js] intValue];
Я знал, что эта проблема UIWebView может произойти, если веб-представление было загружено не полностью (например, JS вызывался до webViewDidFinishLoad: метод, поэтому я предположил, что, возможно, отсутствует «основной» объект. Таким образом, я изменил свой JS на следующее и все заработало:
NSString* js = @"document.getElementById(\"main\") ? document.getElementById(\"main\").offsetHeight : -1";