Как предотвратить закрытие модального представления TTPostController при ошибках?

Для тех из вас, кто использует TTPostController three20, как вы обрабатываете ошибки пользователя перед а после отправки запроса? т. е. если пользователь пытается опубликовать пустой комментарий, я хочу иметь возможность предупредить его и сохранить активное представление, чтобы он мог его исправить.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы модальное представление оставалось открытым после того, как что-то пойдет не так. Я могу предупредить пользователя, но как только он нажмет «ОК», модальное окно будет закрыто. Я думал, что смогу использовать делегата TTPostControllerDelegate:willPostText для выполнения этого, но, похоже, это не работает, или я не понимаю, как именно он предназначен для работы.

Что я делаю:

/**
 * The user has posted text and an animation is about to show the text return to its origin.
 *
 * @return whether to dismiss the controller or wait for the user to call dismiss.
 */
- (BOOL)postController:(TTPostController*)postController willPostText:(NSString*)text {
    if ([text length] == 0) {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:nil 
                                                         message:@"Your message is blank" 
                                                        delegate:self 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
        [alert show];
        [alert release];    

        return false;
    }        
    return true;
}

Если я попытаюсь опубликовать пустой комментарий, я получу предупреждение, информирующее меня об этом, но как только я нажму OK, модальное представление будет закрыто.

Я что-то упускаю или не правильно понимаю?

Редактировать: я также должен отметить, что я пытался использовать метод didDismissWithButtonIndex: alertView, чтобы попытаться остановить выгрузку представления, но мне это не удалось.


person Ken    schedule 24.05.2011    source источник


Ответы (1)


Я столкнулся с этим на днях. Если вы передадите nil вместо себя в качестве делегата в:

UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles 

TTPostController больше не закрывается, когда пользователь нажимает «ОК».

- (BOOL)postController:(TTPostController*)postController willPostText:(NSString*)text {
    if ([text length] == 0) {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:nil 
                                                         message:@"Your message is blank" 
                                                        delegate:nil 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
        [alert show];
        [alert release];    

        return false;
    }        
    return true;
}
person process255    schedule 03.08.2011
comment
Спасибо, процесс255! Я должен был опубликовать продолжение, как только понял это, что было вскоре после того, как я разместил вопрос. Отметил это как принятый ответ. - person Ken; 24.08.2011