1

そのため、UIKeyboard の上に移動する UIToolbar を作成しています。メソッドを呼び出して UITableView をリロードするまで、完了ボタンは完全に機能します。その後、完了ボタンのコールバック関数 (つまり、done:) を除いて、すべてが引き続き機能します。これがなぜなのか誰か知っていますか?次のコードを使用して、ツールバーを備えたカスタム UITableView サブクラスを作成しています...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section != 1){
        if (indexPath.row != 2){
            static NSString *CellIdentifier = @"EditableCell";

            EditableCell *editableCell = (EditableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

            if (editableCell == nil) {

                editableCell = [[EditableCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
            }

 [_myTextField setPlaceholder:@"$0.00"];
          [_myTextField setKeyboardType:UIKeyboardTypeDecimalPad];

        UIToolbar *toolbar = [[UIToolbar alloc] init];
        [toolbar setBarStyle:UIBarStyleBlackTranslucent];
        [toolbar sizeToFit];

        UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(resignKeyboard)];

        doneButton.title = @"Done";

        NSArray *itemsArray = [NSArray arrayWithObjects:doneButton, nil];

        [toolbar setItems:itemsArray];

        [_myTextField setInputAccessoryView:toolbar];
    }

    [_myTextField setReturnKeyType:UIReturnKeyNext];

}
else if (indexPath.section == 1){
    [_myTextField setPlaceholder:@"Describe this food..."];
    [_myTextField setReturnKeyType:UIReturnKeyDone];
}
_myTextField.delegate = self;

return editableCell;
}



 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if([text isEqualToString:@"\n"])
        [textView resignFirstResponder];
    else{

        NSMutableString *textFieldString = [[NSMutableString alloc] initWithString:textView.text];
        [textFieldString replaceCharactersInRange:range withString:text];

        _textViewString = @"";
        _textViewString = textFieldString;

        _foodDescription = textFieldString;

        [self.tableView beginUpdates];
        [self.tableView endUpdates];
    }

    return YES;
}
4

0 に答える 0