2015-04-13 2 views
1

Я попытался сделать снизу вверх компонент UIPickerView, сначала я создал представление контейнера, отличное от моего фактического представления, после чего я добавил представление выбора в представление контейнера. Я установил y-позицию этого представления на 1690. Если кнопка нажата, она будет двигаться вверх с такой анимацией.PickerView исчезает после того, как DidSelectRow

func createPicker(sender: UIButton) 
{ 
    if(isPickerViewOpened == false){ 
    pickerView.reloadAllComponents() 
    shadowImageView.alpha = 0.6 
    UIView.animateWithDuration(0.5, animations: {() -> Void in 
     self.pickerContainer.center = CGPointMake(self.pickerContainer.center.x, self.pickerContainer.center.y - 1000) 
    }) 
    isPickerViewOpened = true 
    } 

} 

Но когда работала функция DidSelectRow, этот вид возвращается в исходное положение.

Моя функция DidSelectRow:

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) 
{ 


    urunCesitButton.setTitle("\(urunCesitAd[row])", forState: .Normal) 
    urunKodu = urunCesitKod[row] 
    urunAd = urunCesitAd[row] 
    urunFiyat = urunCesitFiyat[row] 
    urunAdLabel.text = urunAd 
    urunFiyatLabel.text = "\(urunFiyat) TL" 
    shadowImageView.alpha = 0 
    scrollerView.userInteractionEnabled = true 
    decreaseButtonOutlet.userInteractionEnabled = true 
    urunAdet.userInteractionEnabled = true 
    increaseButtonOutlet.userInteractionEnabled = true 

} 

Я попытался endEditing или resignFirstResponder() в том, что решить, но он не работает. Кто-то еще задал этот вопрос, но ответа не получил.

+1

Ваша проблема, скорее всего, вплоть до ограничений, связанных с pickerContainer. Вы создали сборщик со смещением в построителе интерфейса? Когда вы выберете, макет, вероятно, будет переделан, и он вернет его в положение по умолчанию. Возможно, вам лучше добавить ограничение для левой и верхней позиции, а затем анимировать ограничение. Это обеспечит его пребывание там, где это определяют ограничения. Вы можете создавать IBOutlets для ограничений, перетаскивая CTRL из ограничения в ваш .h-файл. Затем анимируйте постоянное значение каждого ограничения. –

+0

См. Http://stackoverflow.com/questions/12622424/how-do-i-animate-constraint-changes –

+0

@RoryMcKinnel благодарит помощника! который решил мою проблему :) –

ответ

2

Ваша проблема, скорее всего, связана с ограничениями, связанными с pickerContainer. Вы создали сборщик со смещением в построителе интерфейса? Когда вы выберете, макет, вероятно, будет переделан, и он вернет его в положение по умолчанию. Возможно, вам лучше добавить ограничение для левой и верхней позиции, а затем анимировать ограничение. Это обеспечит его пребывание там, где это определяют ограничения. Вы можете создавать IBOutlets для ограничений, перетаскивая CTRL из ограничения в ваш .h-файл. Затем анимируйте постоянное значение каждого ограничения.

См How do I animate constraint changes?

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