iOS UIButton靠近屏幕边缘没有响应正常点击

时间:2015-03-02 05:47:12

标签: ios objective-c uibutton uikit

如下图所示,屏幕边缘附近按钮中的红色矩形部分无法正常响应。我已经听说iOS中的一些机制可以禁用边缘附近的触摸以供用户体验考虑。那么如何禁用这种机制呢?或者如何使边缘附近的按钮正常工作 我试过了UIButton: Making the hit area larger than the default hit area。它适用于"中心"图像中的按钮但不适用于" Edge"按钮。
谢谢!
example

3 个答案:

答案 0 :(得分:1)

系统范围内的手势识别会发生此问题。

系统占据了左边缘,提供了3d-touch应用切换器,控制中心和通知中心使用了顶部和底部。

您可以像下面这样覆盖它:

-(UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
    return UIRectEdgeAll;
}

答案 1 :(得分:0)

问题可能是由于按钮框架。确保边缘按钮框架位于其超视图的边界内。

如果你想在屏幕的右边缘按钮,那么设置按钮的框架,比如

CGSize deviceMainScreenSize = [[UIScreen mainScreen] bounds].size;
UIButton *edgeButton = nil;//initialize edge button
CGFloat edgeButtonWidth = 60;
[edgeButton setFrame:CGRectMake((deviceMainScreenSize.width-edgeButtonWidth), 200, edgeButtonWidth, 30)];

答案 2 :(得分:0)

将此添加到viewDidAppear

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if let window = view.window,
        let recognizers = window.gestureRecognizers {
        recognizers.forEach { r in
            r.delaysTouchesBegan = false
            r.cancelsTouchesInView = false
            r.isEnabled = false
        }
    }
}