У протокола UIAlertviewDelegate есть несколько дополнительных методов включая:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
Это, казалось бы, предложило бы, чтобы не все щелчки кнопки на самом деле отклонили аварийное представление. Однако я вижу, что никакой способ настроить аварийное представление на НЕ автоматически не отклоняет ни с какой прессой кнопки.
Я должен создать подкласс, чтобы достигнуть этого?
Почему был бы Протокол UIAlertViewDelegate иметь:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex;
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
И
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
Если это произвольно не поддерживало не отклонение аварийного представления каждым щелчком кнопки?
Резюмируйте В стороне: Я понимаю то, для чего был разработан UIAlertView. Но моя цель состоит в том, чтобы позволить пользователю копировать некоторый текст к доске пасты перед выходами приложения (который происходит автоматически, когда аварийное представление отклонено.
Да. Подкласс UialertView
, а затем перегрузка -DismisswithClickedButtonindex: Animated:
, E.g.
@implementation MyAlertView
-(void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated {
if (buttonIndex should not dismiss the alert)
return;
[super dismissWithClickedButtonIndex:buttonIndex animated:animated];
}
@end
Неофициально Вы можете определить Вы можете определить
-(void)alertSheet:(UIAlertSheet*)sheet buttonClicked:(id)button;
метод делегата, который сделает его обход -dismisswithClickedButtonindex: анимирован:
, но это недокументировано , так что я не Знайте, подходит ли это для вас.
willPresentAlertView:
, didPresentAlertView:
, alertView:willDismissWithButtonIndex:
, и alertView:didDismissWithButtonIndex:
предназначены для отслеживания начала и конца анимации UIAlertView.
Приложения, которые не нуждаются в отслеживании анимации UIAlertView, могут просто использовать alertView:clickedButtonAtIndex:
. В документации к этому методу сказано: "приемник автоматически сбрасывается после вызова этого метода"