You have created your window with no frame, which will mean it actually has a frame of {{0, 0}, {0, 0}}
. Views can not receive touches that are outside of their parents bounds therefore with a zero frame everything is out of the windows bounds.
You should probably update to something like this
UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
See the note from the UIWindow docs (emphasise my own)
Note:
When you use storyboards and the Xcode app templates to create an app, a window is created for you. If you choose to create a window in Interface Builder, be sure to select the Full Screen at Launch option in the Attributes inspector so that the window is sized appropriately for the current device. Because a window doesn’t receive touch events outside of its bounds and views aren’t clipped to the window’s bounds by default, an improperly sized window might not be able to deliver touch events to all its views.