iPhone:如何在切换视图时制作UITextField,UITextView无法使用

vik*_*tra 2 iphone uitextfield uitextview ios4

我有两个视图 - 一个是我的iphone应用程序中的表视图和另一个详细视图.选择表格中的行时,将显示详细信息视图.

我正在使用nib进行详细视图来编辑记录,添加新记录以及显示记录.详细视图有一个UITextField和一个UITextView,当我只显示记录时需要将其编辑为无法编辑.在didSelectRowAtIndexPathtableview 的方法中我尝试了这个...

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.
    MemoDetailViewController *memoDetailViewController = [[MemoDetailViewController alloc] initWithNibName:@"MemoDetailViewController" bundle:nil];

    memoDetailViewController.memo = [self.resultsController objectAtIndexPath:indexPath];

// making the text field and text view uneditable - DID NOT WORK???
        memoDetailViewController.memoTitleText.enabled = NO;
        memoDetailViewController.memoTextView.editable = NO;

    // Pass the selected object to the new view controller.
    [self.navigationController pushViewController:memoDetailViewController animated:YES];
    [memoDetailViewController release];
}
Run Code Online (Sandbox Code Playgroud)

这不起作用.textfield和uitextview保持可编辑状态 - 当我点击它们时会出现键盘.我在这里错过了什么?

jus*_*tin 7

可能最简单的方法是使用各自的委托方法.它们是相同的,只有不同的名称.使用UITextField作为一个例子,你基本的做法是这个

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if (someCaseWhereYouWantToEdit) {
        return YES;
    } else {
        return NO;
    }
}
Run Code Online (Sandbox Code Playgroud)

这使您可以指定何时继续编辑.您当然需要将textField和textView实例设置self为其委托以及在标头中导入委托协议