It's a pretty common problem with the 05+ Tacomas. The problem there is that there's a rod inside that keeps it in place with a couple metal tabs. The visor itself is plastic, so the metal wears at the plastic until it no longer holds or the plastic itself starts to separate. There's a temporary solution where you cut back the fabric, put a hole in both sides, and use a hose clamp to keep it from separating and squeezing the visor back together around the rod.
The fix lasted about 6 months in my Tacoma (I commute into the sun both ways so I was always adjusting my visor) and now it's floppy again. Just ordered an OEM one to replace it and that cost me just under 100 bucks. I only drive the Tacoma once in awhile (every Weds at the minimum) but it was driving me crazy. Hopefully I don't have the same problem in the 4runner.