【问题标题】:Some part of the screen is not clickable in SWIFT屏幕的某些部分在 SWIFT 中不可点击
【发布时间】:2015-01-08 04:23:40
【问题描述】:

我的视图控制器(横向模式)下有一个嵌套的 UIview,它包含 2 个按钮。 第一个按钮位于屏幕左侧,第二个按钮位于最右侧。我只是想知道为什么第二个按钮只有 1/4 部分起作用。我在 0 轴上重新排列了那个按钮,效果很好。

我认为我在 uiview 上传递的框架有问题。 请看我的代码。

导入 UIKit

类视图控制器:UIViewController {

var screenHolder:ScreenHolder?
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    ProjectData.currentFrame = self.view.frame
    screenHolder = ScreenHolder(frame: ProjectData.currentFrame)
    self.view.addSubview(screenHolder!)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

【问题讨论】:

  • 什么是“0轴”?您展示的这段代码有什么意义?如果它运行良好,那么您已经解决了问题;问题是什么?

标签: ios cocoa-touch swift


【解决方案1】:

此类问题的常见原因是子视图完全或部分超出了其父视图的范围。发生这种情况时,子视图仍然可见,但它变得不可点击。这是因为命中测试的工作方式 - 它从超级视图向下传播,因此看不到超级视图之外的点击,因此不会针对任何子视图进行测试。

所以,在这种情况下,你说:

在包含 2 个按钮的视图控制器(横向模式)下嵌套 UIview

其中一个按钮(子视图)位于嵌套的 UIView(父视图)之外。

检测/调试这种情况的最佳方法是将superview的clipsToBounds设置为true。这样,如果子视图完全或部分在它之外,您将能够看到它,因此您将了解发生了什么并且您不会被子视图的可见性误导。

【讨论】:

  • 谢谢马特!当我使用 clipToBound = true 时,我的视图只显示了屏幕的一半。作为解决方案,我将构造函数的代码粘贴到 viewDidAppear 函数中。
【解决方案2】:

对于有同样问题的人来说,这是解决方案:)

导入 UIKit

类视图控制器:UIViewController {

var screenHolder:ScreenHolder?
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}

override func viewDidAppear(animated: Bool) {
    println("bounds \(view.bounds)")
    ProjectData.currentFrame = self.view.bounds


    screenHolder = ScreenHolder(frame: ProjectData.currentFrame)
    self.view.addSubview(screenHolder!)
    screenHolder?.clipsToBounds = true
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

【讨论】:

    猜你喜欢
    • 2016-06-24
    • 2012-12-07
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2013-06-20
    • 2021-08-24
    • 2012-11-17
    相关资源
    最近更新 更多