我有两个问题,长操作表包含20个选项(大于屏幕高度):
问题1 。滚动时如何禁用垂直反弹?
问题2 。滚动到底部时如何显示行分隔符?
缺少问题2 的行分隔符:
我正在使用Xcode 6.4和iOS 8.4模拟器。我的iPad在iOS 9.0.2上运行相同的代码也存在这两个问题。
我使用UIAlertControllerStyle.ActionSheet
创建了一个操作表。我使用addAction
在操作表中添加了20个选项。
我的 ViewController .swift如下:
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRectMake(50, 60, 200, 20))
button.setTitle("Press", forState: UIControlState.Normal)
button.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
button.addTarget(self, action: "btnPressed:", forControlEvents: UIControlEvents.TouchUpInside)
view.addSubview(button)
}
func btnPressed(sender: UIButton) {
let controller = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)
for item in 1...20 {
controller.addAction(UIAlertAction(title: "Option \(item)", style: UIAlertActionStyle.Default, handler: { action in
}))
}
controller.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))
presentViewController(controller, animated: true, completion: nil)
}
问题1 :
是否有可以在UITableView中设置的跳出属性:tableView.bounces = false
以防止长时间操作表在滚动时出现垂直反弹?
问题2 :
这与“UIActionSheet is not showing separator on the last item on iOS 7 GM”不同,后者使用已弃用的UIActionSheet
而不是UIAlertController
与UIAlertControllerStyle.ActionSheet
。在操作表中添加“取消”选项似乎不是解决方案。
如果我在操作表中添加标题或消息或从中删除“取消”选项,则底线分隔符仍然缺失。
是否可以显示这些缺失的行?
答案 0 :(得分:0)
如果您要在视图中禁用滚动(及其所有子视图),此代码应该可以正常使用。
- (void)disableBouncingInView:(UIView *)view {
for (UIView *subview in view.subviews) {
if ([subview respondsToSelector:@selector(setBounces:)]) {
UIScrollView *scrollView = (UIScrollView *)subview;
[scrollView setBounces:NO];
}
[self disableBouncingInView];
}
}
并将其称为:
[self disableBouncingInView:myAlertController.view];
修改强>:
我刚看到这个问题被标记为swift
,所以在swift中有同样的想法:
func disableBouncingInView(view : UIView) {
for subview in view.subviews as [UIView] {
if let scrollView = subview as? UIScrollView {
scrollView.bounces = false
}
disableBouncingInView(subview)
}
}
并且这样调用:
disableBouncingInView(myAlertController.view)