Показаны сообщения с ярлыком приложения под iPhone. Показать все сообщения
Показаны сообщения с ярлыком приложения под iPhone. Показать все сообщения

вторник, 7 декабря 2010 г.

Свободное место в UIWebView после удаления элементов со страницы

Компонента UIWebView поддерживает JavaScript конструкции, с помощью которых можно создавать интерактивный веб-интерфейс и на айфоне.
Но когда используются подобного рода конструкции:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('foo').style.display = 'none';"];

Возникают непредвиденная ошибка отображения компоненты: UIWebView освободившееся место сдвигает, но не удаляет. Таким образом в конце получается голый фон страницы, по высоте равный убранному элементу.

Поэтому явно приходится напоминать UIWebView реальную высоту содержимого веб-страницы. К примеру следующим образом:

NSString *string = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('wrapper').offsetHeight;"];
CGFloat height = [string floatValue];
CGRect frame = [webView frame];
frame.size.height = height;
[webView setFrame:frame];

воскресенье, 28 ноября 2010 г.

Как убрать панель статуса (status bar) в iPhone

Панель статуса можно сразу убрать для всего приложения. Сделать это можно через файл настроек .plist, включив свойство Status bar is initially hidden:


А теперь остается только на вью проставить следующие свойства:
1. Status Bar в none:


2. Поменять размер на полноэкранный:

 

суббота, 27 ноября 2010 г.

Navigation Controller в iPhone - куда что надо прописывать

Можно долго ломать голову, почему приложение падает с неизвестной ошибкой, после того, как проставишь в InterfaceBuilder связи с переменными и/или методами контроллера. Голова только одна, ломать её не надо, надо нажать на иконку консоли:


Тогда можно увидеть ошибку: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key starQuickTest_btn.'
Эта ошибка означает, что программа не может найти обработчика к кнопке у контроллера, потому что использует не определенный вами контроллер,  а стандартный - UIViewController. Фишка в том, что класс со своим контроллером надо указать дважды для компоненты Navigation Controller:




Navigation Controller содержит в себе несколько элементов (как это видно из рисунка выше): Navigation Bar и View Controller. На панели навигация располагаются кнопки, а вью контроллер - собственно контроллер, управляющий текущим вью из стэка. Как минимум навигация должна содержать один контроллер: корневой вью контроллер. Поэтому именно этой компоненте мы и указываем MainMenuViewController - контроллер для вью, используемого при старте приложения.

воскресенье, 16 мая 2010 г.

Архитектура приложения iPhone

Жизненный цикл приложения состоит из последовательности событий, возникающих с момента его запуска и до момента завершения. После выбора и нажатия пользователем иконки приложения система запускает его, вызывая функцию main. Инициализация приложения передается UIKit, который загружает пользовательский интерфейс и сканирует цикл его событий. В процессе исполнения цикла событий UIKit координирует доставку событий custom objects и отвечает на команды, отправляемые приложением. После того, как пользователь совершил действие по закрытию приложения, UIKit уведомляет приложение об этом и приступает к завершению процесса. Во время инициализации и завершения UIKit отправляет специальные сообщения к объекту делегата приложения, позволяя ему знать, что происходит. Во время исполнения цикла событий UIKit посылает события к соответствующим обработчикам разработчика.
В приложениях для айфонов функция main используется минимально. В действительности большинство работы выполняет UIApplicationMain. Функция main выполняет всего три вещи: создает autorelease пул, вызывает UIApplicationMain и освобождает autorelease пул. Код функции main приведен ниже: