Излезте от 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
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 -C?   -  person Yucel Bayram    schedule 05.12.2014


Отговори (7)


Вижте QA1561:

В: Как да напусна програмно приложението си за iOS?

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

В iOS потребителят натиска бутона Home, за да затвори приложенията. Ако вашето приложение има условия, при които не може да осигури предвидената си функция, препоръчителният подход е да се покаже предупреждение за потребителя, което показва естеството на проблема и възможните действия, които потребителят може да предприеме — включване на WiFi, активиране на услуги за местоположение и т.н. Позволете на потребителя да прекрати приложението по свое усмотрение.

person Droppy    schedule 30.04.2014

Да, кодовете по-горе ще доведат до отхвърляне. Използвайте този код вместо това в бутона OK за предупреждение:

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