Как стать автором
Обновить
14
0

Пользователь

Отправить сообщение

Анонимные классы в Objective-C

Время на прочтение 6 мин
Количество просмотров 6.4K
Даная статья является продолжением «Переопределение реализации метода. Вдохновленный Java'ой». В предыдущей заметке было предложено слишком уж кривое решение, оставлять в таком виде не хотелось и было принято волевое решение довести свое начинание до логического завершения и сделать все «как надо». Хотя вопрос нужности такого функционала в Objective-C до сих пор открыт.
Объяснение
Статья была опубликована вчера, но я нашел способ сделать еще более правильную реализацию, ага, поэтому и скрыл ее на время


Итак, продолжаем быть похожими на Java

Читать дальше →
Всего голосов 6: ↑3 и ↓3 0
Комментарии 2

Переопределение реализации метода. Вдохновленный Java'ой

Время на прочтение 10 мин
Количество просмотров 11K
Продолжение можно почитать тут habrahabr.ru/post/170265

Вступление


Изучая основы разработки под Android мне пришлось познакомится с таким замечательным языком, как Java. Читая очередной раздел гугловского GetStarted я наткнулся на такую конструкцию:

Button.OnClickListener mTakePicSOnClickListener = 
		new Button.OnClickListener() {
		@Override
		public void onClick(View v) {
			
		}
	};

Объявление представителя OnClickListener и переопределения у него метода onClick (поправьте меня Java программисты). Хм, подумал я, а круто бы эту фичу поиметь в Objective-C, а именно возможность переопределять реализацию метода у объекта(конкретного объекта, а не реализацию метода для всех объектов класса) да еще и через блоки в runtime (!) и забыл о этом всем… пока не оказался в полупустом автобусе в дождливую погоду. Времени было много и я решил поразмыслить над тем, что же тут можно сделать.
Зачем это нужно было? Изначально хотелось уметь делать так:

tableView1.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
       NSLog(@"selected row %i", ip.row);
}]
tableView2.delegate = [[NSObject new] override:@selector(tableView:didDeselectRowAtIndexPath:) imp:^void(NSIndexPath* ip){
       NSLog(@"selected row %i", ip.row);
}]

Обратите внимание, что предполагается изменение именно делегата и добавление/предопределение методов у него. А tableView остается оригинальным, без каких либо изменений.

Тем самым местом я чувствовал, что это вполне реализуемо благодаря богатому внутреннему миру Objective-C Runtime.
И да, то самое место меня не подвело.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 3

Определение ориентации Pinch жеста

Время на прочтение 4 мин
Количество просмотров 2.8K

Краткое введение


В одном из проектов мне понадобилось определение ориентации жеста Pinch. Нужно это было для выборочного масштабирования объекта по оси. Т.е. если пальцы сдвигаются/раздвигаются вертикально, то и объект мы масштабируем только вертикально. К сожалению, стандартный распознаватель подобного жеста UIPinchGestureRecognizer не предоставляет такой информации. Просмотрев первую страницу результатов поиска в гугле я не наткнулся на готовое решение. «Ну что же, напишем сами. Так даже интересней :)» — подумал я и приступил к реализации своего пинча.
Читать дальше →
Всего голосов 27: ↑22 и ↓5 +17
Комментарии 4

Легким движением руки UITabBarController превращается в UISplitViewController

Время на прочтение 3 мин
Количество просмотров 1.9K
Доброй ночи/утра/дня/вечера

Как видно из названия статьи я расскажу вам о том, как потратив минимум сил и времени, превратить iPhone`ский UITabBarController в iPad`овский “UISplitViewController”
Для этого нам понадобится: проект(под iPad) с предыдущего моего рассказа, xib файл(под iPhone) с UITabBarController'ом и класс-контроллер к нему. Первое у меня было. Что касается второго и третьего, то я быстро создал xib в Interface Builder'е и дал ему незамысловатое имя iPhoneTabBar.xib.


Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 6

Альтернатива UISplitViewController (отображение MasterView в книжной ориентации устройства)

Время на прочтение 5 мин
Количество просмотров 1.3K
Как было замечено в статье “Всплывающие окна. Работа с UIPopoverController” в iPhone SDK 3.2 были добавлены новые элементы интерфейса: UIPopoverController и UISplitViewController. О первом из них уже довольно подробно рассказано на хабре. Я же хочу поговорить о UISplitViewController, верней о некой альтернативе.

“Зачем же нужна эта альтернатива?”, — спросите Вы, — “какова причина?”. Все дело в особенности поведения SplitView, вот выдержка из SDK: “Both view controllers are displayed in landscape orientations but only the detail view controller is displayed in portrait orientations”. Т.е. при книжной ориентации правая часть (MasterView) попросту прячется(см. рис. 1)


Рисунок 1 — SplitView в альбомной (а) и книжной (б) ориентации

Посмотрев на Основные настройки iPad мы увидим совсем другую картину: и в книжной и в альбомной ориентации левая часть (MasterView) отображается одинаково (не прячется)
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Комментарии 3

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность