Я думаю, что ваша проблема в том, что вы делаете
[self.subView viewWithTag:1];
но представление, которое вы хотите удалить, "принадлежит" self.view, поэтому оно должно быть
[self.view viewWithTag:1];
Но если у вас есть ссылка на subView, зачем искать ее снова? Почему не сразу:
self.subView.hidden = YES;
[self.subView endEditing:YES];
[self.subView removeFromSuperview];
Кстати, вы, возможно, захотите взглянуть на управление памятью, я вижу, что вы распределяете свое подпредставление, но я не вижу его освобождения при повторном удалении представления. Может быть, вы делаете, и вы просто не показываете код, в таком случае забудьте мой комментарий.