Как создать пользовательскую кнопку, которая может изменить изображение, например прямоугольник со скругленными углами

У меня есть два изображения для кнопки, одно для обычного и одно для выбранного. И я хочу, чтобы она действовала так же, как скругленная прямоугольная кнопка, когда вы касаетесь ее, изображение кнопки меняется, и если вы перетаскиваете ее наружу, изображение возвращается к нормальному. Вот что я пробовал.

Сначала я сделал собственный контроллер представления, а затем добавил к нему методы в реализации, которые вы видите здесь. И я подключил эти методы к своим 2 кнопкам, моей кнопке воспроизведения и моей кнопке «Настройки».

- (IBAction)playButtonSelected:(UIButton *)sender {  //this is for event touchDown
       [sender setImage:[UIImage imageNamed:@"PlayButtonSelected.png"] forState:UIControlStateNormal];

}


- (IBAction)playButtonNotSelected:(id)sender { //this is for event touchUpOutside
    [sender setImage:[UIImage imageNamed:@"PlayButton.png"] forState:UIControlStateNormal];

}



- (IBAction)settingsButtonSelected:(UIButton *)sender { //this is for event TouchDown
        [sender setImage:[UIImage imageNamed:@"SettingsButtonSelected.png"] forState:UIControlStateNormal];
}

- (IBAction)settingsButtonNotSelected:(id)sender { //this is for event touchUpOutside
      [sender setImage:[UIImage imageNamed:@"SettingsButtons.png"] forState:UIControlStateNormal];
}

Что ж, я сделал это, и это сработало довольно хорошо, но есть 2 проблемы.

1-й :Если бы у меня было около 20 кнопок, мне пришлось бы иметь 40 методов. На самом деле это не проблема, я просто думаю, что об этом стоит подумать как о потенциальной проблеме.

2-й :Когда я перетаскиваю свою кнопку наружу, я хотел бы, чтобы она переключилась на нормальное изображение до того, как пользователь действительно отпустит палец. На данный момент изображение по умолчанию отображается только тогда, когда палец отпущен, а не когда палец перемещается на определенное расстояние, чтобы команда touchUpInside не выполнялась. Я хочу это, потому что это в основном стандарт. И это также помогло бы пользователю понять, что он может вернуть свое импульсивное поведение по нажатию кнопок, если он того пожелает.

Круто, любая помощь будет большой помощью!

0
задан bmende 5 August 2012 в 01:42
поделиться