2012-03-07 3 views
4

Я пытаюсь использовать UIView, который я создал в Storyboard, в качестве кнопки. Я предположил, что можно будет использовать UIButton, установив тип в пользовательский. Однако мне не удалось добавить subviews в пользовательский UIButton в Storyboard.Использование UIView как кнопки

Как таковой, я только что провел последний час, изобретая колесо, сделав свои собственные собственные редизайнеры жеста, чтобы переопределить функциональность кнопки.

Несомненно, это не лучший способ сделать это, поэтому мой вопрос - более опытным разработчикам iOS, чем я - это лучший способ создать пользовательскую кнопку?

Чтобы было ясно, что необходимо:

  • Используйте UIView, который я создал, как это область мячей по.
  • Можете показать состояние в зависимости от того, подсвечивается ли в данный момент или нет. (т. Е. Касание вниз).
  • Выполнение некоторых действий при фактическом постукивании.

Благодарим за помощь.

ответ

1

Вы можете использовать UIButton, установить тип обычай, а затем программный добавить свои подвидов ...

+0

Так что, чтобы создать пользовательскую кнопку, мне по существу пришлось бы делать все программно, а не использовать раскадровки? –

+0

Nop, вы создаете его на раскадровке, а затем добавляете свои представления (от конструктора интерфейса, например) программно. – fbernardo

0

Подкласс UIControl вместо этого. Вы можете добавить subviews к нему, и он может ответить на действия

+0

Спасибо, я сейчас изучаю его. –

0

Почему вы реализуете свой собственный GestureRecognizer? Я рекомендую использовать UIView, чтобы вы могли добавить subviews в построитель интерфейсов и добавить UITapGestureRecognizer. Вы даже можете сделать это графически, так как вам не нужна поддержка IOS4.

+0

Проблема, с которой я столкнулся с использованием UITapGestureRecognizer, заключалась в том, что она не предлагает никакого способа выделить UIView при касании. В противном случае это было бы прекрасно (и значительно проще, чем любое другое решение). –

0

Измените свой UIView на UIControl в раскадровке. Затем используйте метод
[controlViewName addTarget:self action:@selector(*click handler method*) forControlEvents:UIControlEventTouchDown];. метод обработчика кликов является заполнитель для имени метода вашего обработчика. Используйте этот метод, за исключением изменения UIControlEventTouchDown для UIControlEventTouchInside и UIControlEventTouchDragExit, чтобы вызвать метод, когда пользователь заканчивает свой клик и вытаскивает свой палец из представления соответственно. Я использовал это для чего-то, над чем я сейчас работаю, и он отлично работает.

In Touch вниз вы хотите: выделить все подвиды
In Touch вверх внутри вы хотите: снятия выделения всех подвидов и выполнять SEGUE или делать то, что кнопка должна делать
In Touch Drag Выхода вы хотите to: unhighlight all subviews

См. второй ответ от LiCheng в this Аналогичный SO сообщение.

Смежные вопросы