我有两个问题,一个长长的行动表,包括20个选项(大于屏幕高度):
问题1。如何在滚动时禁用垂直反弹?
问题2。滚动到底部时如何显示行分隔符?
问题2缺少行分隔符:
ios - iOS:大型UIAlertController ActionSheet在滚动时会弹起,并且不显示行分隔符-LMLPHP
我正在使用Xcode6.4和iOS8.4模拟器。我的iPad在iOS 90.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中的bounces属性:tableView.bounces = false以防止长动作工作表在滚动时垂直反弹?
对于问题2:
这与“UIActionSheet is not showing separator on the last item on iOS 7 GM”不同,后者使用已弃用的UIActionSheet而不是带有UIAlertControllerUIAlertControllerStyle.ActionSheet。将“取消”选项添加到操作表似乎不是一个解决方案。
如果我将标题或消息添加到操作表或从中删除“取消”选项,则底线分隔符仍将丢失。
有可能显示这些丢失的行吗?

最佳答案

如果要禁用视图(及其所有子视图)中的滚动,则此代码应该可以正常工作。

- (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)

关于ios - iOS:大型UIAlertController ActionSheet在滚动时会弹起,并且不显示行分隔符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33282759/

10-17 02:37