gpt4 book ai didi

ios - 有没有办法找到 XCUIElement 是否有焦点?

转载 作者:技术小花猫 更新时间:2023-10-29 10:20:50 26 4
gpt4 key购买 nike

我的一个屏幕有多个文本字段,我可以从不同的其他屏幕登陆到这个屏幕。在每种情况下,我都会将一个或另一个文本字段作为第一响应者。我无法编写测试来确定所需的文本字段是否具有焦点。

当我在控制台中打印文本字段时 -

Output: { TextField 0x131171d40: traits: 146031247360, Focused, {{6.0, 108.3}, {402.0, 35.0}}, value: ​ }

但是我在 XCUIElement 上找不到任何 focus/isFocus 属性。

有办法实现吗?

最佳答案

我参加派对有点晚了 :) 然而,据我转储变量 XCUIElement 所见,它有一个有趣的属性:

property name: hasKeyboardFocus

property type: TB,R

因此您可以通过以下方式检查您的元素是否具有焦点:

let hasFocus = (yourTextField.value(forKey: "hasKeyboardFocus") as? Bool) ?? false

注意:您可以转储具有以下扩展名的任何 NSObject 子类的属性变量:

extension NSObject {
func dumpProperties() {
var outCount: UInt32 = 0

let properties = class_copyPropertyList(self.dynamicType, &outCount)
for index in 0...outCount {
let property = properties[Int(index)]
if nil == property {
continue
}
if let propertyName = String.fromCString(property_getName(property)) {
print("property name: \(propertyName)")
}
if let propertyType = String.fromCString(property_getAttributes(property)) {
print("property type: \(propertyType)")
}
}
}
}

更新:属性转储,Swift 4:*

extension NSObject {
func dumpProperties() {
var outCount: UInt32 = 0

let properties = class_copyPropertyList(type(of: self), &outCount)
for index in 0...outCount {
guard let property = properties?[Int(index)] else {
continue
}
let propertyName = String(cString: property_getName(property))
print("property name: \(propertyName)")
guard let propertyAttributes = property_getAttributes(property) else {
continue
}
let propertyType = String(cString: propertyAttributes)
print("property type: \(propertyType)")
}
}
}

关于ios - 有没有办法找到 XCUIElement 是否有焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com