Как создать обработчик в target-c - PullRequest
0 голосов
/ 23 октября 2011

Мне нужно создать приложение для iDevice из другого приложения, созданного для Android.Мне нужно показать диалог всего за две секунды.В Android я использую этот код:

public class ThreadW extends Thread{
    private Handler handler;
    public ThreadW(Handler handler){
       this.handler=handler;
    }
    public void run(){
        notifyM("start");
        Thread.sleep(2500);
        notifyM("stop");
    }
    private void notifyM(String message){
        Message msg = handler.obtainMessage();
        Bundle b = new Bundle();
        b.putString("Dialog", message);
        msg.setData(b);
        handler.sendMessage(msg); 
    }
}

И обработчик:

public class HandlerWelcome extends Handler {
    private DialogWelcome w;
    private Context c ;
    public HandlerWelcome(Context c){
        this.c=c;
    }
    public void handleMessage(Message msg) {
        Bundle bundle = msg.getData();
        if(bundle.getString("Dialog").equals("start")){
            w = new DialogWelcome(c);
            w.show();
        }else if(bundle.getString("Dialog").equals("stop"))
            w.cancel();
    }
}

И я использую все таким образом:

ThreadW tw = new Thread(new HandlerWelcome(c));
tw.start();

Как я могу сделатьто же самое в цели с?

Ответы [ 2 ]

2 голосов
/ 23 октября 2011

Вот решение, которое использует Grand Central Dispatch (GCD):

// Call this method on the main thread
- (void)showWelcomeMessage
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" 
                                                    message:@"Have a nice day!" 
                                                   delegate:nil 
                                          cancelButtonTitle:nil 
                                          otherButtonTitles:nil];
    [alert show];

    dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*2.0);
    dispatch_after(delay, dispatch_get_main_queue(), ^{
        [alert dismissWithClickedButtonIndex:0 animated:YES];
    });

    [alert release];
}

Однако вы должны создать настраиваемое диалоговое окно с предупреждением, так как пользователи iOS не будут ожидать стандартногодиалоговое окно предупреждения автоматически исчезает.

1 голос
/ 23 октября 2011

Вы должны взглянуть на класс NSTimer. Это позволит вам настроить отложенное выполнение определенной цели и селектора (объекта и метода для этого объекта). Такой метод, как scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: может быть тем, что вам нужно.

Посмотрите подробную документацию по классу на сайте разработчиков Apple .

...