gpt4 book ai didi

ios - 当 superview 用户交互禁用 swift 时 subview 用户交互

转载 作者:行者123 更新时间:2023-11-28 12:39:53 25 4
gpt4 key购买 nike

我想保持 subview (在这种情况下为 UITextFields)仍然处于事件状态(可以以通常的方式编辑,即点击 textField 并出现键盘),而作为 UITableViewCell 的 userInteractionEnabled 的父 View 设置为 false。

进一步解释 -1. 有一个从 xib 初始化的 UITableViewCell。

  1. 在这个单元格中,我有三个 UITextField 和一个 UIButton。
  2. 在某些情况下,我需要禁用单元格交互(以避免 didSelectRowAtIndexPath)- 这部分,我没有任何问题。
  3. 在第 3 步之后,单元格内的所有 subview 也都被禁用。
  4. 但我需要在 textFields 中输入一些文本,然后点击按钮并对其执行一些操作。

到目前为止我做了什么:1. 使用 userInteractionEnabled 并为单元格将其设置为 false -

myPersonalInfoExpandedCell.userInteractionEnabled = false

2。两个文本字段 firstNameText 和 lastNameText,我启用了 userInteraction 并将其 firstNameText 设置为 becomeFirstResponder

 (myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).firstNameText.userInteractionEnabled = true
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).lastNameText.userInteractionEnabled = true
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).firstNameText.becomeFirstResponder()

问题是,对于文本字段,userInteractionEnabled 不起作用,我怀疑这是因为 userInteractionEnabled 对于 TableViewCell 是错误的。becomeFirstResponder() 正在为 firstNameText 工作,但我需要与单元格内的所有 UI 元素进行交互。

我们该怎么做?请问有人可以帮忙吗?

最佳答案

要禁用 cellSelection,请实现 willSelectRowAtIndexPath 委托(delegate)方法并为您不想选择的单元格返回 nil。你说你想在某些情况下禁用选择,所以我假设你有你想要禁用选择的行的索引路径。只需为这些 indexPaths 返回 nil。请参见以下代码。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath == self.MyIndex) //Check for the index path for the cell you want to disable selection for
return nil;
else
return indexPath;
}

同样这样做是为了防止单元格突出显示。

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

通过这种方式,您不必在单元格上设置 setUserInteractionEnabled:NO。这样,当您点击单元格时,将不会调用 didSelectRowAtIndexPath 委托(delegate)方法,并且您的 textFields 仍将启用

编辑

以下是上述代码的swift版本

func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
if (indexPath == self.MyIndex) //Check for the index path for the cell you want to disable selection for
return nil;
else
return indexPath;
}


cell.selectionStyle = .None

关于ios - 当 superview 用户交互禁用 swift 时 subview 用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39696878/

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