The way iptables process rules is: grab a packet and try to match it against the ruleset, from top do bottom. If a rule match, execute it and stop further processing (except for specific cases like when the target is another chain, LOG, RETURN, etc).
Every chain also have a DEFAULT Policy (its ACCEPT by default), that is what happens with a packet that does not match any rule.
Now, if you have two rules like this:
iptables -A INPUT -p tcp ! -s 220.127.116.11 --dport 2222 -j REJECT
iptables -A INPUT -p tcp ! -s 18.104.22.168 --dport 2222 -j REJECT
If you access from the IP 22.214.171.124, the first rule matches and is applied (by doing nothing, and the rule is treated by the chain DEFAULT Policy, that I believe is ACCEPT). In the second case, If the IP is 126.96.36.199, the first rule matches also and is applied (by REJECTing the access).
What you problably want is something like this (don't just type these rules on your system or you will lock yourself out!):
iptables -P DROP INPUT # Changes the INPUT Chain default policy to DROP
iptables -A INPUT -p tcp -s 188.8.131.52 --dport 2222 -j ACCEPT # Allows the access of IP 184.108.40.206
iptables -A INPUT -p tcp -s 220.127.116.11 --dport 2222 -j ACCEPT # Allows the access of IP 18.104.22.168
Understand that, by using these rules, you'll need to update your ruleset to allow access for other services (like allowing yourself accessing SSH and other services on the server, thus the advice against locking yourself out of the server).