Я думаю здесь:
int recty2 = rect.origin.y + rect.size.width;
Вы, вероятно, имели в виду:
int recty2 = rect.origin.y + rect.size.height;
Но вы должны знать, что уже существует функция C CGRectContainsPoint (точка, точка), которая делает то, что вы хотите. Так что вам не нужно писать один, если вы не хотите.