Приложение, которое я создаю, имеет множество пользовательских UIB-кнопок, наложенных поверх довольно точно выложенных изображений. Застегнутый, управляйте изображениями и метками и тому, что у вас есть, но с четким пользовательским стилем UIButton, сидящим поверх него, чтобы справиться с краном.
Мой клиент вчера сказал: «Я хочу, чтобы это выделилось, когда вы нажмете на него». Не берите в голову, что это немедленно выдвигает новое представление контроллера uinavigation ... это не мигало, и поэтому он смущен. Oy.
Вот что я сделал для решения этой проблемы. Мне это не нравится, но это то, что я сделал:
Я подкласс UIButton (называя его FlashingUIButton).
По какой-то причине я не мог просто настроить его с выделенным фоновым изображением в режиме управления. Казалось, что никогда не попал в состояние «выделены». Не знаю, почему это так.
Так что вместо этого я написал:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self setBackgroundImage:[UIImage imageNamed:@"grey_screen"] forState:UIControlStateNormal];
[self performSelector:@selector(resetImage) withObject:nil afterDelay:0.2];
[super touchesBegan:touches withEvent:event];
}
-(void)resetImage
{
[self setBackgroundImage:nil forState:UIControlStateNormal];
}
Это радостно кладет мой grey_screen.png (30% непрозрачный черный ящик) поверх кнопки, когда она нажата, и заменяет ее счастливой пустотой .2 секунды позже.
Это нормально, но это означает, что мне нужно пройти через все мои многочисленные перья и изменить все мои кнопки с кнопок UIB на FlashingUIButtons. Что не конец света, но я действительно надеялся назвать это категорией UIButton и ударить всех птиц одним камнем.
Есть предложения по лучшему подходу, чем этот?