2014-09-10 4 views
1

У меня есть представление UIPicker, в котором есть варианты выбора. Я выбираю из них и нажимаю, но UIViewPicker не закрывается. Как закрыть его или по крайней мере запустить событие, чтобы я мог скрыть его программно?IOS8. Закрыть UIPickerView при выборе нажмите swift

Я смотрел UIPickerViewDelegate, но не нашел подходящего метода, который бы выполнялся не при выборе элемента, а только при нажатии выбранного элемента.

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

ответ

0

использовать метод делегата UIPickerView как сильфона ..

  • (пустоты) pickerView: (UIPickerView *) thePickerView didSelectRow: (NSInteger) строки inComponent: (NSInteger) компонент {

    yourTextField.text = [yourArray objectAtIndex:row]; 
    thePickerView.hidden = YES; 
    

    }

Update

можно добавить UITapGestureRecognizer к UIPickerView:

UITapGestureRecognizer * tapGR = [UITapGestureRecognizer Alloc] initWithTarget: само действие: @selector (pickerViewTapped]; [pickerView addGestureRecognizer: tapGR];

И потом:

  • (аннулируются) pickerViewTapped { // уволить сборщика. }
+1

Выполняется при изменении выбора. Мне нужен метод, который будет выполняться, когда я на самом деле нажимаю на выбранный элемент. –

+0

@WildGoat вы можете изменить выбор только в режиме выбора. как вы нажимаете в режиме выбора? – Ramesh

+1

Да, вы вращаете и меняете параметры в pickerview, но как только вы найдете требуемый вариант, все, что вы делаете, - это щелкнуть по нему, а вид выбора исчезнет. Если я поместил его внутри метода pickerView, он скроет его, прежде чем нажимать, как только изменение закончено. Вы поняли? –

1

Вы могли бы сделать сборщика видимым раз пользователь щелкает в текстовом поле с помощью функции textFieldDidBeginEditing, то скрыть, используя функцию didSelectRow ...

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

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 

     myPicker.hidden = true 

    } 

Я, конечно, предполагая, что вы сделали все необходимые DataSource и делегат связывания и функции для UIPickerView ...

0

В методе didSelectRow просто добавьте эту строку в конце взаимодействия:

self.view.endEditing(true) 
Смежные вопросы