Hutkikz:
You're right that delay() will interfere with button reading as it is "blocking" code meaning it blocks other code from running until it's finished.
You may not realize that a for loop(any loop) is also blocking code and will prevent anything outside of the loop i.e. the button from being read.Since you haven't posted your code, I can only guess that what's needed is to implement a timing sequence to replace the delay as suggested by vaj4088 and to replace the for loop with a conditional statement( an if statement or a state machine).
I will post my code soon. I have a about 60% of it working without using for loops. Adding one for loop removed 45 lines of code.
Right now I'm trying to get rid of another 100 or so lines of code.
I'm working on small block of code to get them working before incorporating into my master code.
I'm really close.