如何在ios 8的alertview中添加文本输入?

时间:2015-11-30 10:31:13

标签: ios objective-c uialertcontroller

我想在ios 8的alert-view中添加文本输入。 我知道它是使用UIAlertController完成的,但没有任何想法。 怎么做 ?

9 个答案:

答案 0 :(得分:118)

截图

代码

 UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @"Login"
                                                                                  message: @"Input username and password"
                                                                              preferredStyle:UIAlertControllerStyleAlert];
    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"name";
        textField.textColor = [UIColor blueColor];
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.borderStyle = UITextBorderStyleRoundedRect;
    }];
    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"password";
        textField.textColor = [UIColor blueColor];
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.borderStyle = UITextBorderStyleRoundedRect;
        textField.secureTextEntry = YES;
    }];
    [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
        NSArray * textfields = alertController.textFields;
        UITextField * namefield = textfields[0];
        UITextField * passwordfiled = textfields[1];
        NSLog(@"%@:%@",namefield.text,passwordfiled.text);

    }]];
    [self presentViewController:alertController animated:YES completion:nil];

答案 1 :(得分:8)

<强> AlertViewController

        // use UIAlertController
        UIAlertController *alert= [UIAlertController
                                      alertControllerWithTitle:@"Title"
                                      message:@"SubTitle"
                                      preferredStyle:UIAlertControllerStyleAlert];

        UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                   handler:^(UIAlertAction * action){
                                                       //Do Some action here
                                                       UITextField *textField = alert.textFields[0];
                                                       NSLog(@"text was %@", textField.text);

                                                   }];
        UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault
                                                       handler:^(UIAlertAction * action) {

                                                           NSLog(@"cancel btn");

                                                           [alert dismissViewControllerAnimated:YES completion:nil];

                                                       }];

        [alert addAction:ok];
        [alert addAction:cancel];

        [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
            textField.placeholder = @"placeHolderText";
            textField.keyboardType = UIKeyboardTypeDefault;
        }];

        [self presentViewController:alert animated:YES completion:nil];

<强> UIAlertView中

        UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Title"
                                                         message:@"SubTitle"
                                                        delegate:self
                                               cancelButtonTitle:@"Cancel"
                                               otherButtonTitles:@"OK", nil];

        dialog.alertViewStyle = UIAlertViewStylePlainTextInput;

        [dialog show];

    }

答案 2 :(得分:6)

UIAlertView *myView = [[UIAlertView alloc]initWithTitle:@"Input" message:@"Enter your value" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
myView.alertViewStyle = UIAlertViewStylePlainTextInput;
[myView textFieldAtIndex:0].delegate = self;
[myView show];

你可以这样说。谢谢

答案 3 :(得分:5)

使用Swift 3实现的示例:

$a={
    function Create-FacilityCSV(){
        # Paste the Create-FacilityCSV fucntion code
       }
}
    Start-Job -InitializationScript $a -Name CSV -ScriptBlock {
      param ([string[]]$directory_info)
        foreach ($d in $directory_info) {
        cd $d
        Create-FacilityCSV
        cd ..
        } #end foreach
    } -ArgumentList (,$directory_info)

答案 4 :(得分:3)

UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"Title" message:@"Please enter someth" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];

av.alertViewStyle = UIAlertViewStylePlainTextInput;

[av textFieldAtIndex:0].delegate = self;
[av show];

另外,您需要实现UITextFieldDelegate,UIAlertViewDelegate协议。

如果你使用uialertcontroller然后使用这个

UIAlertController * alert=   [UIAlertController
                              alertControllerWithTitle:@"My Title"
                              message:@"Enter User Credentials"
                              preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                           handler:^(UIAlertAction * action) {
                                               //Do Some action here

                                           }];
UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault
                                               handler:^(UIAlertAction * action) {
                                                   [alert dismissViewControllerAnimated:YES completion:nil];
                                               }];

[alert addAction:ok];
[alert addAction:cancel];

[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
    textField.placeholder = @"Username";
}];
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
    textField.placeholder = @"Password";
    textField.secureTextEntry = YES;
}];

[self presentViewController:alert animated:YES completion:nil];

答案 5 :(得分:1)

这是一个方便的方法,如果输入了文本的提交/取消和完成处理程序:

/**
 Presents an alert controller with a single text field for user input

 - parameters:
    - title: Alert title
    - message: Alert message
    - placeholder: Placeholder for textfield
    - completion: Returned user input
 */

func showSubmitTextFieldAlert(title: String,
                              message: String,
                              placeholder: String,
                              completion: @escaping (_ userInput: String?) -> Void) {

    let alertController = UIAlertController(title: title,
                                            message: message,
                                            preferredStyle: .alert)

    alertController.addTextField { (textField) in
        textField.placeholder = placeholder
        textField.clearButtonMode = .whileEditing
    }

    let submitAction = UIAlertAction(title: "Submit", style: .default) { (action) in
        let userInput = alertController.textFields?.first?.text
        completion(userInput)
    }

    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in
        completion(nil)
    }

    alertController.addAction(submitAction)
    alertController.addAction(cancelAction)

    present(alertController, animated: true)
}

答案 6 :(得分:0)

带文本输入的UIAlertViewController

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title"
                                                               message:nil
                                                        preferredStyle:UIAlertControllerStyleAlert];
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
    // optionally configure the text field
    textField.keyboardType = UIKeyboardTypeAlphabet;
}];

UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK"
                                                   style:UIAlertActionStyleDefault
                                                 handler:^(UIAlertAction *action) {
                                                     UITextField *textField = [alert.textFields firstObject];
                                                     textField.placeholder = @"Enter Input";
                                                 }];
[alert addAction:okAction];

[self presentViewController:alert animated:YES completion:nil];

答案 7 :(得分:0)

  func askForName() {
let alert = UIAlertController(title: "Enter Text",
                              message: "Enter some text below",
                              preferredStyle: .alert)

alert.addTextField { (textField) in
  textField.text = "New Text"
}

let action = UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
  let textField = alert!.textFields![0]
  print("Text field: \(textField.text)")
})

alert.addAction(action)

present(alert, animated: true, completion: nil)

}

答案 8 :(得分:0)

这个对我有用:

let passwordString = lableGetPassword.text
    var textField: UITextField?
    
    // create alertController
    let alertController = UIAlertController(title: "Password", message: "Save the password. Give a tag name.", preferredStyle: .alert)
    alertController.addTextField { (pTextField) in
        pTextField.placeholder = "Tag Name"
        pTextField.clearButtonMode = .whileEditing
        pTextField.borderStyle = .none
        textField = pTextField
    }
    
    // create cancel button
    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (pAction) in
        alertController.dismiss(animated: true, completion: nil)
    }))
    
    // create Ok button
    alertController.addAction(UIAlertAction(title: "Save", style: .default, handler: { [self] (pAction) in
        // when user taps OK, you get your value here
        let name = textField?.text
        save(name: name!, password: passwordString!)
        alertController.dismiss(animated: true, completion: nil)
    }))
    
    // show alert controller
    self.present(alertController, animated: true, completion: nil)