自定义展开/折叠日期选择器在';表视图底部单元格中的s-Swift
我有一个自定义的内联日期选择器,它可以像Apple日历事件日期选择器一样展开和折叠。问题是,我需要将日期选择器放置在UITableView底部的UITableViewCell中,但当它展开时,如果不手动向下滚动视图,则无法看到选择器。对于类似的问题(如果UITextField低于键盘高度,则在编辑时会消失在键盘后面),我可以通过BeginEdit和EndEdit代理函数中的动画来修复它:自定义展开/折叠日期选择器在';表视图底部单元格中的s-Swift,swift,uidatepicker,uianimation,Swift,Uidatepicker,Uianimation,我有一个自定义的内联日期选择器,它可以像Apple日历事件日期选择器一样展开和折叠。问题是,我需要将日期选择器放置在UITableView底部的UITableViewCell中,但当它展开时,如果不手动向下滚动视图,则无法看到选择器。对于类似的问题(如果UITextField低于键盘高度,则在编辑时会消失在键盘后面),我可以通过BeginEdit和EndEdit代理函数中的动画来修复它: let keyboardHeight: CGFloat = 216 UIView.animateWithD
let keyboardHeight: CGFloat = 216
UIView.animateWithDuration(0.25, delay: 0.25, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
self.view.frame = CGRectMake(0, (self.view.frame.origin.y - keyboardHeight), self.view.bounds.width, self.view.bounds.height)
}, completion: nil)
是否有人知道类似的动画可能用于放置在didSelectRowAtIndexPath中,如果是日期选择器,屏幕将通过向下滚动来调整,以显示已展开的完整日期选择器,然后当不再选择该行时,屏幕将调整回原位,或者沿着这些线进行调整
- 我不确定是否已经出现了一个动画来展开/折叠日期选择器,这一事实会与此冲突,或者这只是动画出现的优先级问题。无论如何,我将在下面发布一些代码:
/**
Used to notify the DatePickerCell that it was selected. The DatePickerCell will then run its selection animation and expand or collapse.
*/
public func selectedInTableView() {
expanded = !expanded
UIView.transitionWithView(rightLabel, duration: 0.25, options:UIViewAnimationOptions.TransitionCrossDissolve, animations: { () -> Void in
self.rightLabel.textColor = self.expanded ? self.tintColor : self.rightLabelTextColor
}, completion: nil)
}
didSelectRowAtIndexPath函数:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Deselect automatically if the cell is a DatePickerCell.
let cell = self.tableView(tableView, cellForRowAtIndexPath: indexPath)
if (cell.isKindOfClass(DatePickerCell)) {
let datePickerTableViewCell = cell as! DatePickerCell
datePickerTableViewCell.selectedInTableView()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
} else if(cell.isKindOfClass(PickerCell)) {
let pickerTableViewCell = cell as! PickerCell
pickerTableViewCell.selectedInTableView()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
tableView.beginUpdates()
tableView.endUpdates()
}
我想我找到了一个似乎可以根据需要工作的解决方案,在调用
selectedTableView()
之后,我在didSelectRowAtIndexPath
委托函数中编写了这段代码:
if(datePickerTableViewCell.isExpanded() && datePickerTableViewCell.datePicker == billDatePicker.datePicker) {
tableView.contentOffset = CGPoint(x: 0, y: self.view.frame.height + datePickerTableViewCell.datePickerHeight())
}