Пометка вида как "занятого" в Какао - PullRequest
3 голосов
/ 07 февраля 2012

Я пишу приложение Какао, и мне нужно указать пользователю, что представление недопустимо и не может ответить, пока не завершится фоновое задание.

Более длинная версия:

Представление в моем приложении содержит некоторые данные, полученные с сервера.Когда приложение определяет, что данные являются недействительными, оно получает свежую информацию и отображает ее.Обычно обновление происходит слишком быстро, чтобы увидеть, но если из-за проблем с сервером или сетью фоновое задание занимает больше секунды или двух, мне нужно убедиться, что пользователь

  1. не может взаимодействовать с представлением, показадание завершено;
  2. Может сказать, что представление ожидает обновления;и
  3. Может продолжать взаимодействовать с другими частями приложения до завершения задания.

1) важно, поскольку любая операция, инициированная с устаревшими данными, завершится неудачно, и еслисеть или сервер работают медленно, я не хочу, чтобы пользователь тратил свое время на тщетные попытки взаимодействия с этой частью приложения.(Хорошо, если пользователь все еще может увидеть данные. На самом деле это может быть полезно, но это не принципиально.)

Какой стандартный способ сделать это в Какао?Для чего это стоит, в Eclipse Framework я думаю, что я использовал метод showBusy на ViewPart.

Если не существует стандартного способа, есть ли у кого-нибудь предложения по его решению?Я не использую OS X очень долго, поэтому я даже не уверен, как приложение должно выглядеть и вести себя в этой ситуации.(Скриншоты на этой странице выглядят многообещающе, но это iOS, а не OS X: http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html)

Сейчас я работаю над заменой всего представления на NSProgressIndicator и восстановлением представления после завершения задачи, но удаление представления означает, что мое приложение может оказаться в отличном состоянии, если что-то пойдет не так. Кроме того, я хотел бы иметь возможность выделить эту функциональность в свой собственный класс или категорию (?), так как у меня будет эта проблема снесколько различных классов представления в моем приложении. В идеале я хотел бы получить что-нибудь простое, например Eclipse view.showBusy (true) /view.showBusy (false).

Любая помощь будет полезна.Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2012

Почему бы просто не нарисовать другой вид поверх занятого?Вы можете либо отобразить изображение, которое означает «занят», либо нарисовать его как полупрозрачный, чтобы оно затеняло версию обновления «занят» до обновления.

...