Есть ли способ отклонить кнопку без кнопки uialertView через некоторое время?
-
10-10-2019 - |
Вопрос
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"tittle"
message:@""
delegate:self
cancelButtonTitle:@""
otherButtonTitles:nil];
[alertView show];
[alertView release];
Я хочу погрузиться в Alerview после того, как он показывается в течение некоторого времени, но когда у AlertView нет кнопки, он не работает, если я вызову -dismissWithClickedButtonIndex:animated: method
а также-performSelector:withObject:afterDelay:
Есть ли другой способ отклонить это? Спасибо за любые идеи!
Решение
-(void)xx {
[self performSelector:@selector(dismissAlertView:) withObject:alertView afterDelay:2];
}
-(void)dismissAlertView:(UIAlertView *)alertView{
[alertView dismissWithClickedButtonIndex:0 animated:YES];
}
Вот и все. Я исправляю это
Другие советы
Используйте задержки 10 секунд для увольнения
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alertController animated:YES completion:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[alertController dismissViewControllerAnimated:YES completion:^{
p\Perform Action after dismiss alertViewController
}];
});
В xamarin.ios / monotouch это сработало для меня:
private async Task ShowToast(string message, UIAlertView toast = null)
{
if (null == toast)
{
toast = new UIAlertView(null, message, null, null, null);
toast.Show();
await Task.Delay(2000);
await ShowToast(message, toast);
return;
}
UIView.BeginAnimations("");
toast.Alpha = 0;
UIView.CommitAnimations();
toast.DismissWithClickedButtonIndex(0, true);
}
Помните, что если асинхровый метод вызывается из фонового потока (не основного потока пользовательского интерфейса), то Invokeonmainthread все равно будет необходимо. Это просто означает, что вы называете приведенный выше метод таким:
BeginInvokeOnMainThread(() =>
{
ShowToast(message);
});
обновить ответ выше как UIAlertView
является deprecated
Ответьте на эту ссылку
2 -я функция должна быть такой
-(void)dismissAlertView:(UIAlertController *)alertView{
[alertView dismissViewControllerAnimated:YES completion:nil];
}