【发布时间】:2013-04-16 16:04:11
【问题描述】:
我有一个分组表视图,并尝试在用户按 Enter 键时为文本字段设置新的第一响应者。
这对我来说并不是什么新鲜事,我的代码在我进行一些不相关的更改之前可以正常工作,而现在却不行。当我设置它的第一响应者时,我有一个指向正确文本字段的指针,没有任何反应。
焦点完全离开任何文本字段,键盘停留在屏幕上。然后回车键和“隐藏键盘”键都停止工作,直到用户重新开始关注文本字段。
代码如下:
- (void)uiTextFieldShouldReturn:(ObjectEditTextField *)uiTextField
{
if ((group.fields.count - 1) > uiTextField.fieldTag)
{
//loop through every table group
for (int i = uiTextField.fieldTag + 1; i < group.fields.count; i++) {
//get whatever field is in the row (not necessarily a text field)
ObjectEditField *field = [group.fields objectAtIndex:i];
// a check if the field is of type UITextField
if (field.propName && field.updateObjectOnEdit == YES && [field isKindOfClass:[UITextField class]]) {
// set the active field
activeField = field;
// adjust the table view offset to make sure the text field is visble
[self setTableViewOffsetForTextField:field];
// obtain a pointer to the textfield object and set it to be the first responder
UITextField *textField = (UITextField *)field;
NSLog(@"field %@", textField.fieldLabel);
if (![textField.field isFirstResponder]) {
[textField.field becomeFirstResponder];
return;
}
break;
}
}
}
【问题讨论】:
-
什么是焦点?如果“什么都没发生”,你如何摆脱“专注”?您是否有没有“不相关更改”的先前版本来检查同一设备/模拟器?
-
我的猜测是这个问题根本与这段代码无关。检查文本字段 (
ObjectEditField) 代码中发生的情况。也许当becomeFirstResponder被调用时它正在做某事?也许它阻塞了主线程?也许在这之间发生了其他事情,其他一些领域成为第一响应者? -
它在模态视图控制器内吗?
-
@Sulthan 是的,这是在模态视图控制器中
-
@A-Live by focus 我的意思是当你有一个文本字段处于焦点时,你会在字段内看到闪烁的线,如果你输入,字符就会出现在那里。这显示了“专注”。当我分配FirstResponder 时,它会远离当前文本字段(应该如此),但焦点从未在新文本字段中设置
标签: ios objective-c ipad