1

ここに私が持っているコードがあります:

    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Confirm Address" message:@"Please confirm your address:" delegate:self cancelButtonTitle:@"Confirm" otherButtonTitles:nil];
    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    UITextField * alertTextField = [alert textFieldAtIndex:0];
    alertTextField.text = @"1234 ABC Street";
    [alertTextField becomeFirstResponder];
    UITextPosition *beginning = [alertTextField beginningOfDocument];
    [alertTextField setSelectedTextRange: [alertTextField
                                   textRangeFromPosition:beginning
                                   toPosition:beginning]];

    [alert show];

カーソルはテキストフィールドの先頭に設定されません。私は何を間違っていますか?

4

2 に答える 2

1

UITextFieldDelegateController に を実装し、setSelectedTextRangeコードをtextFieldDidBeginEditingデリゲート コールバックに移動します。

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Confirm Address" message:@"Please confirm your address:" delegate:self cancelButtonTitle:@"Confirm" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.text = @"1234 ABC Street";
[alertTextField becomeFirstResponder];

// Your UITextFieldDelegate implementer here
[alertTextField setDelegate:self];

[alert show];

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    UITextPosition *beginning = [textField beginningOfDocument];
    [textField setSelectedTextRange:[textField textRangeFromPosition:beginning
                                                          toPosition:beginning]];
}

<UITextFieldDelegate>上記のようにデリゲートを実装および設定するヘッダー ファイルまたはクラス拡張で指定することが重要です。

于 2013-10-18T19:37:59.343 に答える