Когда вы определяете свое всплывающее окно, вы должны определить его видимый прямоугольник (рамку).
В вашем главном контроллере вида, когда пользователь нажимает на экран, получает местоположение касания и проверяет, что точка не содержится в вашем всплывающем фрейме.
Это просто пример, иллюстрирующий это:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *aTouch = [touches anyObject];
if (aTouch.tapCount == 1)
{
CGPoint p = [aTouch locationInView:self.view];
if (!CGRectContainsPoint(yourpopupview.frame, p))
{
// dismiss the popup
}
}
}
Надеюсь, это тебе поможет.