I had the same issue, but resolved it by deleting the three iptables rules that pihole adds on installation (allow tcp/udp port 53, allow tcp port 80). Try this:
sudo iptables -D INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -D INPUT -p tcp -m tcp --dport 53 -j ACCEPT
sudo iptables -D INPUT -p udp -m udp --dport 53 -j ACCEPT
sudo ufw allow from <your.ip.here> to any port 53
sudo ufw deny 53
This should work until you update pi-hole (which will re-add the rules). I'm looking into saving the rules with iptables-persistent
right now, I'll let you know if that works.
UFW isn't catching the requests because these auto-installed rules are superseding UFW, since UFW is a thin abstraction layer over iptables and rule order is critical in iptables.