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