Разрешение пользователю выбрать строку UIPickerView путем ответвления

Я пытаюсь использовать Представление UIPicker с поведением, так или иначе отличающимся из того, что обычно замечается в примерах кода iPhone.

То, что я хочу сделать, должно позволить пользователям просматривать содержание средства выбора путем прокрутки, но не выбирать строку средства выбора автоматически (использующий "didSelectRow" метод от делегата средства выбора). Вместо этого я хочу позволить пользователю касаться центральной строки средства выбора, которое выделяется и становится выбором.

Там какой-либо путь состоит в том, чтобы достигнуть этого?

Заранее спасибо.

11
задан camilo 8 March 2010 в 17:59
поделиться

2 ответа

  1. создайте новый UIControl

    • в той же позиции, что и UIPickerView
    • [yourcontrol setBackGroundColor: [UIColor clearColor]];
  2. создать метод

- (IBAction) pickerControlTapped 
{
    [yourpicker selectRow: rand()% yourpickersize
              inComponent: 0
                 animated: YES];
}

.3. установите соединение между 1 и 2

 
[yourcontrol addTarget: self 
                action: @selector(pickerControlTapped) 
      forControlEvents: UIControlEventTouchUpInsied];
5
ответ дан 3 December 2019 в 04:52
поделиться

Есть только 2 делегата для UIPickerView.

Таким образом, мы можем использовать только 7 методов для управления UIPickerView через делегат.

- pickerView:rowHeightForComponent:
- pickerView:widthForComponent:
- pickerView:titleForRow:forComponent:
- pickerView:viewForRow:forComponent:reusingView:
- pickerView:didSelectRow:inComponent:
- numberOfComponentsInPickerView:
- pickerView:numberOfRowsInComponent:

вот и все.

В случае UITableViewDelegate, есть больше методов для UITableView для управления выборами. например, tableView:willSelectRowAtIndexPath:
- tableView:didSelectRowAtIndexPath:
- tableView:willDeselectRowAtIndexPath:
- tableView:didDeselectRowAtIndexPath:

Однако...

В случае UIPickerViewDelegate есть только 1 метод для реагирования на выбор строки.

- pickerView:didSelectRow:inComponent:

0
ответ дан 3 December 2019 в 04:52
поделиться