ios تمكين - ما هي الطريقة البسيطة للحصول على مربع حوار منبثق لإدخال النص على iPhone




الاخطاء اعدادات (10)

اريد الحصول على اسم المستخدم. مربع حوار إدخال نص بسيط. أي طريقة بسيطة للقيام بذلك؟


Answers

للتأكد من حصولك على معاودة الاتصال بعد قيام المستخدم بإدخال نص ، قم بتعيين المفوض داخل معالج التكوين. textField.delegate = self

Swift 3 و 4 (iOS 10 - 11):

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.default, handler: nil))
alert.addTextField(configurationHandler: {(textField: UITextField!) in
    textField.placeholder = "Enter text:"
    textField.isSecureTextEntry = true // for password input
})
self.present(alert, animated: true, completion: nil)

في Swift (iOS 8-10):

override func viewDidAppear(animated: Bool) {
    var alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
    alert.addTextFieldWithConfigurationHandler({(textField: UITextField!) in
        textField.placeholder = "Enter text:"
        textField.secureTextEntry = true
        })
    self.presentViewController(alert, animated: true, completion: nil)
}

في Objective-C (iOS 8):

- (void) viewDidLoad 
{
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Alert" message:@"Message" preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:@"Click" style:UIAlertActionStyleDefault handler:nil]];
    [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"Enter text:";
        textField.secureTextEntry = YES;
    }];
    [self presentViewController:alert animated:YES completion:nil];
}

لنظام التشغيل iOS 5-7:

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"INPUT BELOW" delegate:self cancelButtonTitle:@"Hide" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];

ملاحظة: لا يعمل ما يلي مع iOS 7 (iOS 4 - 6 Works)

فقط لإضافة نسخة أخرى.

- (void)viewDidLoad{

    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Preset Saving..." message:@"Describe the Preset\n\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
    UITextField *textField = [[UITextField alloc] init];
    [textField setBackgroundColor:[UIColor whiteColor]];
    textField.delegate = self;
    textField.borderStyle = UITextBorderStyleLine;
    textField.frame = CGRectMake(15, 75, 255, 30);
    textField.placeholder = @"Preset Name";
    textField.keyboardAppearance = UIKeyboardAppearanceAlert;
    [textField becomeFirstResponder];
    [alert addSubview:textField];

}

ثم أتصل بـ [alert show]; عندما اريد ذلك.

الطريقة التي تمضي

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {         
    NSString* detailString = textField.text;
    NSLog(@"String is: %@", detailString); //Put it on the debugger
    if ([textField.text length] <= 0 || buttonIndex == 0){ 
        return; //If cancel or 0 length string the string doesn't matter
    }
    if (buttonIndex == 1) {
        ...

    }
}

جرّب رمز Swift في UIViewController -

func doAlertControllerDemo() {

    var inputTextField: UITextField?;

    let passwordPrompt = UIAlertController(title: "Enter Password", message: "You have selected to enter your passwod.", preferredStyle: UIAlertControllerStyle.Alert);

    passwordPrompt.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: { (action) -> Void in
        // Now do whatever you want with inputTextField (remember to unwrap the optional)

        let entryStr : String = (inputTextField?.text)! ;

        print("BOOM! I received '\(entryStr)'");

        self.doAlertViewDemo(); //do again!
    }));


    passwordPrompt.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default, handler: { (action) -> Void in
        print("done");
    }));


    passwordPrompt.addTextFieldWithConfigurationHandler({(textField: UITextField!) in
        textField.placeholder = "Password"
        textField.secureTextEntry = false       /* true here for pswd entry */
        inputTextField = textField
    });


    self.presentViewController(passwordPrompt, animated: true, completion: nil);


    return;
}

في Xamarin و C #:

var alert = new UIAlertView ("Your title", "Your description", null, "Cancel", new [] {"OK"});
alert.AlertViewStyle = UIAlertViewStyle.PlainTextInput;
alert.Clicked += (s, b) => {
    var title = alert.ButtonTitle(b.ButtonIndex);
    if (title == "OK") {
        var text = alert.GetTextField(0).Text;
        ...
    }
};

alert.Show();

UIAlertview *alt = [[UIAlertView alloc]initWithTitle:@"\n\n\n" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];

UILabel *lbl1 = [[UILabel alloc]initWithFrame:CGRectMake(25,17, 100, 30)];
[email protected]"User Name";

UILabel *lbl2 = [[UILabel alloc]initWithFrame:CGRectMake(25, 60, 80, 30)];
lbl2.text = @"Password";

UITextField *username=[[UITextField alloc]initWithFrame:CGRectMake(130, 17, 130, 30)];
UITextField *password=[[UITextField alloc]initWithFrame:CGRectMake(130, 60, 130, 30)];

lbl1.textColor = [UIColor whiteColor];
lbl2.textColor = [UIColor whiteColor];

[lbl1 setBackgroundColor:[UIColor clearColor]];
[lbl2 setBackgroundColor:[UIColor clearColor]];

username.borderStyle = UITextBorderStyleRoundedRect;
password.borderStyle = UITextBorderStyleRoundedRect;

[alt addSubview:lbl1];
[alt addSubview:lbl2];
[alt addSubview:username];
[alt addSubview:password];

[alt show];

سويفت 3:

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.default, handler: nil))
alert.addTextField(configurationHandler: {(textField: UITextField!) in
     textField.placeholder = "Enter text:"
})

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

اختبار مقتطف الشفرة الثالث لـ Warkst - عمل رائعًا ، إلا أنني غيرته ليكون نوع إدخال افتراضيًا بدلاً من رقمي:

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Hello!" message:@"Please enter your name:" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.keyboardType = UIKeyboardTypeDefault;
alertTextField.placeholder = @"Enter your name";
[alert show];

أود استخدام UIAlertView مع عرض UITextField . يمكنك إما إضافة حقل النص يدويًا أو ، في نظام التشغيل iOS 5 ، استخدم إحدى الطرق الجديدة.


أردت فقط إضافة جزء هام من المعلومات التي أعتقد أنه تم استبعادها ربما بافتراض أن أولئك الذين يبحثون عن إجابات قد يعرفون بالفعل. هذه المشكلة تحدث كثيرا وأنا أيضا وجدت نفسي عالقة عندما حاولت تنفيذ طريقة viewAlert لأزرار رسالة UIAlertView . للقيام بذلك ، تحتاج إلى إضافة فئة المفوضين أولاً والتي قد تبدو كالتالي:

@interface YourViewController : UIViewController <UIAlertViewDelegate>

كما يمكنك العثور على برنامج تعليمي مفيد للغاية here !

أتمنى أن يساعدك هذا.


في دائرة الرقابة الداخلية 5 هناك طريقة جديدة وسهلة لهذا. لست متأكداً مما إذا كان التنفيذ قد اكتمل تمامًا حتى الآن لأنه ليس كريماً كما ، على سبيل المثال ، UITableViewCell ، ولكنه يجب أن يعمل بشكل خادق تمامًا كما هو معتمد الآن في واجهة برمجة تطبيقات iOS. لن تحتاج إلى واجهة برمجة تطبيقات خاصة لهذا الغرض.

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"This is an example alert!" delegate:self cancelButtonTitle:@"Hide" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
[alert release];

يعرض هذا تنبيهًا مثل هذا (لقطة شاشة مأخوذة من محاكي iPhone 5.0 في XCode 4.2):

عند الضغط على أي أزرار ، سيتم استدعاء طرق التفويض العادية ويمكنك استخراج النص textIn هناك على النحو التالي:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    NSLog(@"Entered: %@",[[alertView textFieldAtIndex:0] text]);
}

هنا أنا فقط NSLog النتائج التي تم إدخالها. في كود الإنتاج ، من المحتمل أن تحتفظ بمؤشر AlertView كمتغير شامل أو استخدم علامة alertView للتحقق مما إذا كانت وظيفة التفويض قد تم استدعائها بواسطة UIAlertView المناسب ولكن هذا المثال يجب أن يكون على ما يرام.

يجب عليك التحقق من UIAlertView API وسترى أن هناك بعض الأنماط المحددة.

آمل أن هذا ساعد!

-- تصحيح --

كنت ألعب مع alertView قليلا ، وأعتقد أنه لا يحتاج إلى أي إعلان أنه من الممكن تماما لتحرير TextField على النحو المرغوب فيه: يمكنك إنشاء إشارة إلى UITextField وتحريرها كالمعتاد (برمجيا). عند القيام بذلك ، قمت بإنشاء تنبيه كما هو محدد في سؤالك الأصلي. متأخرا أفضل من عدمه، أليس كذلك :-)؟

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Hello!" message:@"Please enter your name:" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.keyboardType = UIKeyboardTypeNumberPad;
alertTextField.placeholder = @"Enter your name";
[alert show];
[alert release];

هذا ينتج هذا التنبيه:

يمكنك استخدام نفس أسلوب المفوض الذي استخدمه في كتابة ملصق سابق لمعالجة النتيجة من الإدخال. لست متأكدًا مما إذا كنت تستطيع منع UIAlertView من UIAlertView (على الرغم من عدم shouldDismiss تفويض وظيفة مندوب AFAIK) ، لذلك أفترض إذا كان إدخال المستخدم غير صالح ، يجب عليك وضع تنبيه جديد (أو فقط إعادة show ) حتى إدخال صحيح تم إدخاله.

إستمتع!


@ محمود علي قاسم

لقد قمت للتو بتغيير بعض CSS لجعلها تبدو مختلفة وإضافة التركيز ()؛

https://jsfiddle.net/xn9eogmx/81/

$('#clear').click(function() {
  $('#input-outer input').val('');
  $('#input-outer input').focus();
});
body {
  font-family: "Arial";
  font-size: 14px;
}
#input-outer {
  height: 2em;
  width: 15em;
  border: 1px #777 solid;
  position: relative;
  padding: 0px;
  border-radius: 4px;
}
#input-outer input {
  height: 100%;
  width: 100%;
  border: 0px;
  outline: none;
  margin: 0 0 0 0px;
  color: #666;
  box-sizing: border-box;
  padding: 5px;
  padding-right: 35px;
  border-radius: 4px;
}
#clear {
  position: absolute;
  float: right;
  height: 2em;
  width: 2em;
  top: 0px;
  right: 0px;
  background: #aaa;
  color: white;
  text-align: center;
  cursor: pointer;
  border-radius: 0px 4px 4px 0px;
}
#clear:after {
  content: "\274c";
  position: absolute;
  top: 4px;
  right: 7px;
}
#clear:hover,
#clear:focus {
  background: #888;
}
#clear:active {
  background: #666;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="input-outer">
  <input type="text">
  <div id="clear"></div>
</div>





iphone ios