President Trump has canceled a planned military strike on Iran, saying the move came at the request of Tehran and regional countries in exchange for a rapid deal.