我查看了类似的问题并尝试了答案,我无法让它们正常工作,如果这是一个重复的问题,请道歉。
我的表视图中有两个地址字段,可以在静态单元格中动态添加。当用户在第一个框中输入地址时,我想要“复制地址”的问题。当他们点击第二个地址字段时显示,然后如果他们回答“是”'则复制地址。我有这个工作在tableView didSelectRowAtIndexPath,但是当用户直接在字段中点击UITextView时它不起作用。我尝试将以下内容添加到viewDidLoad()函数中:
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.billingAddress addGestureRecognizer:tap];
但是,点击UITextView billingAddress时,以下代码不会触发。
- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
NSLog(@"I am here");
}
我应该注意,billingAddress被定义为UITextField属性,并在静态单元格的tableView cellForRowAtIndexPath中分配了单元格的详细信息。这是使用以下代码完成的:
if (section == 0 && row == 3) {
BFCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"CheckoutInputCell"];
cell.nameLabel.text = @"Billing Address";
cell.nameLabel.font = [UIFont fontWithName:@"Populaire" size:23.0f];
cell.textField.placeholder = @"Required";
self.billingAddress = cell.textField;
cell.textField.keyboardType = UIKeyboardTypeAlphabet;
return cell;
}
我想知道我是否将点击手势分配到错误的位置,并且应该将其分配给cell.textField。对此的任何帮助将不胜感激。
答案 0 :(得分:1)
我认为发生的事情是文本字段和手势识别器之间的冲突。我会使用UITextFieldDelegate
textFieldShouldBeginEditing:
来检测用户点击文字字段的时间。
答案 1 :(得分:0)
持有属于UITableViewCell
的对象的引用是一个很大的错误。
最好通过在单元格中使用布尔flad将UITapGestureRecognizer
直接添加到单元格内的文本字段中,以告诉它是否应该响应触摸。
if (section == 0 && row == 3) {
BFCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"CheckoutInputCell"];
cell.nameLabel.text = @"Billing Address";
cell.nameLabel.font = [UIFont fontWithName:@"Populaire" size:23.0f];
cell.textField.placeholder = @"Required";
//self.billingAddress = cell.textField; // wrong way.
cell.addTouchFlag = true // do this instead.
cell.textField.keyboardType = UIKeyboardTypeAlphabet;
return cell;
}
和两者
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.textField addGestureRecognizer:tap];
和
- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
NSLog(@"I am here");
}
应该在单元格类中(如果没有,则可以创建它)。
Charles Thierry answer中的 更新:他很清楚使用委托方法更好的方法是检测用户点击textField。但你应该像我上面提到的那样做。这意味着单元格类符合UITextFieldDelegate
并实现textFieldShouldBeginEditing: