想要在点击时快速返回第一个响应者的索引,但顺序很奇怪



我有 100 个UITextFieldstoryBoard盒子,它们存储在一个名为 boxArray 的数组中。

我还有另一个叫做importantIndexes的数组,它存储boxArray的重要索引。

(请耐心等待下一段(

当用户点击 boxArray 中的特定UITextField框时,其索引与 importantIndexes 数组中的值匹配。然后我想返回 importantIndexes 数组的索引,该值是 boxArray 第一响应者的索引。

这是点击其中一个特定UITextField时调用的函数:

@objc func myNotWorkingFunction(textField: UITextField) {
for i in 0...99 {
if (boxArray[i]?.isFirstResponder)! {
let index = boxArray.index(of: boxArray[i])
print(index)
}
}
}

我遇到了两个问题。首先是打印函数返回"可选(索引("。我只想要 int 值索引,但它像这个例子一样打印它:可选(14(。

我的第二个问题是,这似乎打印了第一个响应者在更改为新响应者之前的第一响应者的索引。假设用户在第 11 个 boxArrayUITextField,然后点击第 55 个,打印返回"Optional(11(",而不仅仅是我想要的"55"。

我不能在这里使用textFieldDidEndEditing(:_),这可能工作正常。我必须坚持使用点击功能。有什么想法吗?

第一个问题通过解包解决

if let index = boxArray.index(of: boxArray[i]) {
print(index)
}

第二个问题"可能"是,当你的objc function被调用时,你需要调用它。

宣:var currentTextField: UITextField?

在您的函数中:

currentTextField?.resignFirstResponder()
currentTextField = textField
textField.becomesFirstResponder()

最新更新