在3.5和4英寸设备上安装UIPicker和3个文本字段

时间:2015-03-21 00:57:29

标签: xcode swift autolayout uipickerview

我有(从上到下)2个UILabel,1个UIPickerView,3个UITexfield和1个按钮。鉴于选择器的大小,在键盘出现时,它与3.5和4英寸设备上的文本字段重叠。当键盘显示时,我使用了一些代码来弹出文本字段,但我不确定如何处理选择器。我试着将它隐藏在键盘上,但它太突然了,用户可能想要改变他们不能轻易做出的选择。鉴于尺寸限制,我应该如何处理选择器?

   override func viewDidLoad() {
        super.viewDidLoad()
        countyPicker.delegate = self
        countyPicker.dataSource = self


            NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
            NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
        }

        func keyboardWillShow(sender: NSNotification) {
            self.view.frame.origin.y -= 150
        }

        func keyboardWillHide(sender: NSNotification) {
            self.view.frame.origin.y += 150
  //          countyPicker.hidden = true

    }

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

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

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent componefnt: Int) {
 //       countyPicker.alpha = 0.3
        selectedCounty = titleData.mdCounties[row].name
    }

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {

        return titleData.mdCounties[row].name!
    }

2 个答案:

答案 0 :(得分:0)

您可以使用一条简单的线条来指示选择器的选择。在点击线条时,您可以使用动画显示或隐藏线条下方的选择器。

UITableView中执行此操作可能有意义。查看Apple在编辑活动时如何在其日历应用中显示和隐藏日期选择器。在插入和删除表视图行时,您可以使用标准行动画非常精美地完成此操作。

表格视图解决方案也更加灵活,因为它将始终有效,即使将来必须显示的项目数量会增加,或者Apple推出新的iPhone nano。

答案 1 :(得分:0)

将1 UIPickerView和3 UITexfield放在一个视图中,并在键盘出现时弹出整个视图。

由于您已经编写了用于弹出文本字段的代码,因此可以解决这个问题。

希望这会对你有所帮助。 :)