Проверяемый UIPickerView в iPhone Safari - PullRequest
1 голос
/ 07 октября 2010

Я пытаюсь настроить свой вид выбора так, чтобы его можно было проверять, например, когда вы щелкаете раскрывающийся список в веб-просмотре, как на картинке (веб-сайт YouTube).

enter image description here http://img830.imageshack.us/img830/3747/screenshot20101004at606.png

Я использую метод viewForRowчтобы настроить представление для каждой строки в средстве выбора.

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{

 UIView *rowView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 280, 44)] autorelease];
 rowView.backgroundColor = [UIColor clearColor];
 rowView.userInteractionEnabled = NO;

 UIImageView *checkmarkImageView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 10, 24, 19)];

 UIFont *font = [ UIFont boldSystemFontOfSize:18];
 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(35, 0, 240, 44) ];
 NSString *pickerText = [[Itemlist objectAtIndex:row] objectForKey:@"name"];
 titleLabel.text = pickerText;
 titleLabel.textAlignment = UITextAlignmentLeft;
 titleLabel.backgroundColor = [UIColor clearColor];
 titleLabel.font = font;
 titleLabel.opaque = NO;

 if ([selected_property_id intValue] == row) {
  titleLabel.textColor = [UIColor blueColor];
  checkmarkImageView.image = [UIImage imageNamed:@"checkmark.png"];
 }else {
  titleLabel.textColor = [UIColor blackColor];
  checkmarkImageView.image = nil;
 }

 [rowView addSubview:checkmarkImageView];
 [rowView addSubview:titleLabel];
 [titleLabel release];
 [checkmarkImageView release];

 return rowView; 

}


- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
 [m_pickerView reloadAllComponents];
}

Когда я выбираю нужную строку, она добавляет флажок к выбранной строке совершенно НО, когда я прокручиваю средство выбора вверх / вниз, средство выбора автоматически выбирает строкув середине сборщика.Итак, он автоматически добавляет галочку в среднем ряду.

У меня вопрос, как отключить автоматический выбор в среднем ряду.Следует добавить галочку, когда пользовательские вкладки в строке, которые они хотят только (как в YouTube).

Должен ли я использовать метод сенсорного события для выбора выбора?

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Да, вы должны использовать сенсорные события.Однако стандартный UIPickerView фиксирует касания и не передает их, поэтому viewcontroller никогда не получает события.

Я создал проект на Github с подклассом UIPickerView, который разрешает касаниячтобы избежать этого.Он перенаправляет их в суперпредставление, а затем обрабатывает выборку в методе touchesEnded контроллера вида.Также реализована упомянутая галочка.

0 голосов
/ 18 февраля 2012

Ссылка это: https://github.com/scelis/SCKit/tree/

Это пример проекта. действительно лучше, чем вставить код здесь.

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