Выйти из приложения iOS программно с помощью UIAlertView

Я прерываю свое приложение iOS следующими способами

-(void)cancelSelected
{
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:nil message:@"Are you sure you want to exit?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];

    [alert show];

    alert = nil;
}

Способ 1:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex)
        abort();
}

Способ 2:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex)
        [NSException raise:@"Disagree terms and conditions." format:@"Quit, Cancel"];
}

Должен ли я сделать это, чтобы выйти из приложения iOS программно?

Приведет ли этот метод abort() к отклонению моего приложения?

Спасибо!


person Natarajan    schedule 30.04.2014    source источник
comment
Да, наверное, будет   -  person Scott Berrevoets    schedule 30.04.2014
comment
developer.apple.com/library/ios/qa/qa1561/_index. html   -  person rdurand    schedule 30.04.2014
comment
Будет 50-50. Они могут это заметить, а могут и не заметить. Другой способ - заставить его выйти, сделать что-то неожиданное - вызвать метод для nil... таким образом, приложение вылетит и закроется.   -  person Michal    schedule 30.04.2014
comment
возможный дубликат Можно ли выйти iOS после проверки   -  person rmaddy    schedule 30.04.2014
comment
@rmaddy Этот вопрос не должен повторяться. Из-за того, что я использовал UIAlertView, чтобы показать действия пользователям.   -  person Natarajan    schedule 30.04.2014
comment
Использование представления предупреждений не имеет отношения к вопросу. Вопрос о выходе из приложения. Apple дает понять, что вы не должны выходить из приложения. Это выбор пользователя.   -  person rmaddy    schedule 30.04.2014
comment
Должен ли я использовать NSException для выхода из приложения?   -  person Natarajan    schedule 30.04.2014
comment
возможный дубликат Как закрыть приложение для iPad в Objective -С?   -  person Yucel Bayram    schedule 05.12.2014


Ответы (7)


См. QA1561:

В: Как мне программно выйти из приложения iOS?

О: API для корректного завершения работы приложения iOS не предоставляется.

В iOS пользователь нажимает кнопку «Домой», чтобы закрыть приложения. Если в вашем приложении есть условия, в которых оно не может выполнять свои функции, рекомендуемый подход заключается в отображении предупреждения для пользователя, указывающего на характер проблемы и возможные действия, которые пользователь может предпринять — включение Wi-Fi, включение служб определения местоположения и т. д. Разрешить пользователю закрывать приложение по своему усмотрению.

person Droppy    schedule 30.04.2014

Да, приведенные выше коды приведут к отклонению. Вместо этого используйте этот код в кнопке «ОК» предупреждения:

UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
person Mohsen Hossein pour    schedule 22.10.2017

Да, как правило, вам будет отказано в этом.

Просто отправьте предупреждение пользователю с одной опцией, поэтому он должен одобрить отклонение предупреждения. Затем, если они отклоняют (одобряют), они могут использовать приложение, а если нет, то не могут и должны выйти из приложения вручную.

person Wain    schedule 30.04.2014
comment
Я предположил, что на самом деле вы хотите получить какое-то одобрение от пользователя. Если вы действительно предлагаете кнопку close, то вам следует просто удалить ее и ничего не делать. - person Wain; 30.04.2014

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Game Over" message:@"Your time is up" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *close = [UIAlertAction actionWithTitle:@"close" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
                                                                 **exit(0);**
                                                             }];
UIAlertAction *playagain = [UIAlertAction actionWithTitle:@"Play again" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
                                                                  [self viewDidLoad];
                                                             }];

[alert addAction:close];
[alert addAction:playagain];

[self presentViewController:alert animated:YES completion:nil];

Используйте exit(0) для закрытия текущего приложения

person Dharmesh Mansata    schedule 11.01.2017
comment
Предупреждение: не вызывайте функцию выхода. Приложения, вызывающие выход, будут отображаться для пользователя как аварийно завершенные, а не выполняющие изящное завершение и анимацию возврата на главный экран. developer.apple.com/library/content/qa/qa1561/_index. html - person seggy; 01.11.2017

Вы можете использовать приведенный ниже код для программного выхода из приложения iOS с помощью UIAlertView: -

Шаг 1:

Delegate "UIAlertViewDelegate" to your viewcontroller.h

for example:
 @interface User_mail_List : UIViewController< UIAlertViewDelegate >

Шаг 2:

//create your UIAlertView
UIAlertView  *exit_alertView= [[UIAlertView alloc] initWithTitle:@"Bizbilla !" message:@"\nAre you sure you want to Exit ?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes",nil];
[exit_alertView show];

Шаг 3:

-(void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex{
if(alertView==exit_alertView){//exit Alert Fns Start,,,,,
    if(buttonIndex==1){
        exit(0);
    }
}//exit Alert Fns End,,,,,

}

Благодарность,

person Kupendiran iOS    schedule 02.05.2016

Нажмите на кнопку alertview

Вы можете использовать: exit(0)?

Or,

[[NSThread mainThread] exit], используя это, вы можете выйти из приложения ios.

person ravi sendhav    schedule 28.11.2014
comment
Похоже, [[NSThread mainThread] exit] даже не скомпилируется в 11.2? - person SAHM; 02.03.2018

Как насчет вызова функции fatalError()? Я только что использовал его, все работает, как и ожидалось. (Надеюсь, это не вызовет отказа.)

person Murat Yasar    schedule 09.02.2017