我在setInputAccessoryView
方法中尝试shouldChangeCharactersInRange
。但它不起作用。我只能在textFieldDidBeginEditing
我希望AccessoryView仅在用户输入内容时显示,而不是仅在用户点按UITextField
时显示
我目前在textFieldDidBeginEditing
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField setInputAccessoryView:tableView];
}
有办法做到这一点吗?我可以做一些解决方法吗?
非常感谢任何帮助。感谢
答案 0 :(得分:0)
您可以将目标添加到文本字段,如下所示
[your_textField addTarget:tableView action:@selector(textFieldValueChanged:) forControlEvents:UIControlEventEditingChanged];
此处textFieldValueChanged:
是自定义方法,您将在其中实现表格视图的更多代码
答案 1 :(得分:0)
我没有使用UITableView
进行测试,但我确实尝试在UIToolbar
中将textfield:shouldChangeCharactersInRange:replacementString:
设置为输入附件视图并且成功了。您将需要一个标记来跟踪附件视图是否显示,因此您不会多次运行设置代码。只有当键盘即将呈现时才会检查输入附件视图的存在,因此您必须在您辞职的舞蹈中进行跳舞,然后成为第一个响应者。此外,为了在第一次键盘敲击后立即显示输入附件视图,您必须重新显示文本字段。
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
if (!self.accessoryViewDisplayed) {
self.accessoryViewDisplayed = YES;
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
toolbar.translucent = NO;
toolbar.barTintColor = [UIColor greenColor];
textField.inputAccessoryView = toolbar;
[textField resignFirstResponder];
[textField becomeFirstResponder];
[textField setNeedsDisplay];
}
return YES;
}
更新
在进一步考虑之后,您可以在viewDidLoad
中配置输入附件视图,并将hidden
设置为YES
。然后在文本字段委托方法中,您可以简单地设置标记并取消隐藏输入附件视图,而无需执行resign /成为第一响应者舞蹈。