2016-06-01 2 views
1

вот мой вопросSwift не может коснуться кнопки в UIPickerView

Я установил всплывающую pickerview и добавить панели инструментов в верхней , но я не могу коснуться или нажмите кнопку на верхней части UIPickerView

Все в порядке включают создать PickerView и верхней части кнопки

self.view.addSubview(pickerView) 
    self.pickerView.addSubview(toolBar) 

это два кода работает на мой взгляд, и можно выбрать, но не можете нажать кнопку Готово

enter image description here

как можно кодировать, что можно нажать?

я Пробовал "userInteractionEnabled" и "willMoveToSuperview" он не работает

плз кто-то помочь мне .... спасибо

Все Код здесь

import UIKit 

    class AddNew: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { 


    @IBOutlet weak var display: UILabel!  

    var pickerViewList = ["one","two","three","four","five"] 

    var pickerView = UIPickerView() 

    var toolBar = UIToolbar() 

    override func viewDidLoad(){ 
    super.viewDidLoad() 
    pickerView.delegate = self 
    pickerView.dataSource = self 
    pickerView.backgroundColor = UIColor.whiteColor() 

    toolBar.barStyle = UIBarStyle.Default 
    toolBar.backgroundColor = UIColor.whiteColor() 
    toolBar.translucent = true 
    toolBar.tintColor = UIColor.blueColor() 
    toolBar.sizeToFit() 

    let doneButton:UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target:self, action:#selector(AddNew.hideMypicker)) 

    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 

    let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action:#selector(AddNew.hideMypicker)) 

    cancelButton.tintColor = UIColor.whiteColor() 
    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) 
} 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return pickerViewList.count 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return pickerViewList[row] 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    display.text = pickerViewList[row] 
} 

@IBAction func ClickButton(sender: UIButton) { 
    self.pickerView.frame.origin.y = self.view.frame.height 
    self.pickerView.bounds = CGRectMake(0, self.pickerView.bounds.origin.y, UIScreen.mainScreen().bounds.width, self.pickerView.bounds.height) 
    self.pickerView.frame.origin.x = 0 
    UIView.animateWithDuration(0.3){ 
     self.pickerView.frame.origin.y = self.view.frame.height - self.pickerView.frame.height 
    } 
    self.view.addSubview(pickerView) 
    self.pickerView.addSubview(toolBar) 
} 

func hideMypicker(){ 
    UIView.animateWithDuration(0.3,animations:{self.pickerView.frame.origin.y = self.view.frame.height},completion:{(value:Bool) in self.twofunction()}) 
} 



func twofunction() { 
    pickerView.removeFromSuperview() 
    toolBar.removeFromSuperview() 
} 
+0

Пожалуйста, покажите toolBar и pickerView коды инициализации –

+0

Что сказал @ChathurangaSilva, и я был бы подозрительным, если действие кнопки просто не подключено должным образом. – sschale

+0

Запишите свой код, чтобы контекст стал более понятным, как назначить действие кнопке и т. Д. – dip

ответ

0

Почему бы Вы создаете собственный подкласс ActionSheetPickerView для UIControl? Там вы можете установить методы PickerViewDataSource и PickerViewDelegate, чтобы u мог использовать то же самое, где вам нужно pickerView.

Создайте ActionSheetPickerViewDelegate (пользовательский делегат), определяющий методы для doneButtonTap под необязательным разделом.

Код стал бы намного чище и легче отлаживать. Теперь, вернувшись к вашему коду, вы пробовали отладку с помощью отладчика вида?

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