0

我试图跳过当用户浏览我的表格视图时被禁用的文本字段。但是,当它们到达可见单元格的边界时,一切都会变得异常,因为我正在尝试检测文本字段是否被禁用,如果是,则再次递归调用我的方法以再次导航。IE。如果用户按下按钮向右导航,并且该文本字段被禁用,则再次递归调用右按下。

似乎,可见范围之外的单元格中的任何文本字段都被禁用。一旦用户到达桌子的边缘,我就会进入无限循环,或者事情就会中断。

这是我的代码部分,我在其中进行启用检查,如果没有进行递归调用。这真的不应该那么复杂。从逻辑上讲,我想要做的就是检测我们刚刚移动到的文本字段是否被禁用,如果是这样,只需再次启动相同的按钮按下。没有什么花哨。

通过一些游戏测试进行编辑,尽管destinationIndexPath 和newTag 值是正确的,但nextTextFieldSelection 显然返回为null。请求不可见的 indexPath 是否可能导致返回 null?

     //logic to move to next text field and manually scroll the tableViewbased on button input is here

    nextTextFieldSelection = (UITextField *)[[_tableView cellForRowAtIndexPath:destinationIndexPath] viewWithTag:newTag];
    if (nextTextFieldSelection.userInteractionEnabled == NO) {
        switch (arrowButton.tag) {
            case NumericKeyboardViewLeftArrow:
                currentTextField = nextTextFieldSelection;
                [self numericKeyboardView:(VS_NumericKeyboardView *)numericKeyboardView DidSelectArrowButton:(UIButton *)arrowButton];
                return;
            case NumericKeyboardViewRightArrow:
                currentTextField = nextTextFieldSelection;
                [self numericKeyboardView:(VS_NumericKeyboardView *)numericKeyboardView DidSelectArrowButton:(UIButton *)arrowButton];
                return;
            default:
                break;
        }
    }
4

1 回答 1

2

对于不可见的单元格,cellForRowAtIndexPath 返回 nil。这可能就是你进入那个无限循环的原因。

请参阅:http: //developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006943-CH3-SW16

于 2013-02-28T16:39:50.463 回答