2012-03-21 1 views
0

Я подклассифицировал UIPickerView, чтобы добавить немного больше функциональности (я на 99% уверен, что это не имеет никакого отношения к этому вопросу). В drawRect Я добавил панель инструментов, чтобы немного убрать панель инструментов, проблема в том, что ни UIToolbar, ни UIBarButtonItem внутри панели инструментов не получают касаний. Это почти так, как если бы представление было «невидимым» в том, что штрихи пересылаются к представлению позади него (UITableView). Я знаю, что могу просто создать «контрольный» вид, который содержит как сборщик, так и панель инструментов. Но я просто хотел знать, есть ли способ сделать это, не создавая другого представления?UIToolbar выше пользовательского UIPickerView не получает штрихи

Вот мой DrawRect код:

- (void)drawRect:(CGRect)rect 
{ 

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 

     pickerToolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, self.frame.size.width, 40)]; 


     UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemDone target: self.delegate action: closeAction]; 

     [pickerToolbar setItems: [NSArray arrayWithObject: closeButton]]; 

     [self addSubview: pickerToolbar]; 
    } 
} 

Вот фото:

My custom UIPicker

ответ

1

Никогда, никогда не делать этого. Вы добавляете новый subview каждый раз, когда набирается сборщик!

Если ваш выборщик представляет собой вид ввода текстового поля, просто создайте панель инструментов и добавьте ее в качестве вида вспомогательного устройства ввода. Затем он появится над сборщиком для вас. Это стандартный способ достижения такого поведения.

+0

Теперь, когда я думаю об этом, вы абсолютно обряд, это действительно действительно глупо ха-ха. Но входной аксессуар выглядит только для чтения, поэтому я предполагаю, что просто переопределяю свойство. Я попробую это, спасибо! – pob21

+0

Это на самом деле не дало мне результата, который я искал, но большое спасибо за вашу помощь! – pob21

+1

Вид аксессуара для входа не доступен только для чтения. Возможно, я не был чист. У вас есть текстовое поле, в котором вы используете сборщик для редактирования содержимого. Это текстовое поле имеет два свойства - входное представление (ваше стандартное представление UIPickerView) и входной вид аксессуара (панель инструментов). Установите их, и система объединяет их для вас. Почему вы подклассифицируете сборщик? – jrturton