我想保持子视图(在这种情况下为UITextFields)仍处于活动状态(以常规方式编辑,即点击textField并出现键盘),而作为UITableViewCell的userInteractionEnabled的父视图设置为false。
进一步解释 - 1.有一个从xib初始化的UITableViewCell。
到目前为止我做了什么: 1.使用userInteractionEnabled并将其设置为false为单元格 -
myPersonalInfoExpandedCell.userInteractionEnabled = false
2。两个textFields firstNameText和lastNameText,我启用了userInteraction并将firstNameText设置为firstFirstResponder
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).firstNameText.userInteractionEnabled = true
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).lastNameText.userInteractionEnabled = true
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).firstNameText.becomeFirstResponder()
问题是,对于textFields,userInteractionEnabled
无效,我怀疑因为userInteractionEnabled
对于TableViewCell是假的。
becomeFirstResponder()
适用于firstNameText
,但我需要与单元格内的所有UI元素进行互动。
我们怎么能这样做?请有人帮忙吗?
答案 0 :(得分:2)
要禁用cellSelection,请执行willSelectRowAtIndexPath委托方法,并为您不想选择的单元格返回nil。你说你想在某些条件下禁用选择,所以我假设你有要为其禁用选择的行的indexPaths。只需为这些indexPath返回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委托方法不会被调用,你的textFields仍然会被启用
修改强>
以下是上述代码的快速版本
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