Note that there are some explanatory texts on larger screens.

plurals
  1. POiPhone Developer's Cookbook: ModalAlert Frozen
    text
    copied!<p>I've used a recipe from the iPhone Developer's Cookbook called ModalAlert in order to get some text from a user; however, when the alert is shown, the keyboard and buttons are frozen. Here is the code for the modal alert.</p> <pre><code>+(NSString *) textQueryWith: (NSString *)question prompt: (NSString *)prompt button1: (NSString *)button1 button2:(NSString *) button2 { // Create alert CFRunLoopRef currentLoop = CFRunLoopGetCurrent(); ModalAlertDelegate *madelegate = [[ModalAlertDelegate alloc] initWithRunLoop:currentLoop]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:question message:@"\n" delegate:madelegate cancelButtonTitle:button1 otherButtonTitles:button2, nil]; // Build text field UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 260.0f, 30.0f)]; tf.borderStyle = UITextBorderStyleRoundedRect; tf.tag = TEXT_FIELD_TAG; tf.placeholder = prompt; tf.clearButtonMode = UITextFieldViewModeWhileEditing; tf.keyboardType = UIKeyboardTypeAlphabet; tf.keyboardAppearance = UIKeyboardAppearanceAlert; tf.autocapitalizationType = UITextAutocapitalizationTypeWords; tf.autocorrectionType = UITextAutocorrectionTypeNo; tf.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; // Show alert and wait for it to finish displaying [alertView show]; while (CGRectEqualToRect(alertView.bounds, CGRectZero)); // Find the center for the text field and add it CGRect bounds = alertView.bounds; tf.center = CGPointMake(bounds.size.width / 2.0f, bounds.size.height / 2.0f - 10.0f); [alertView addSubview:tf]; [tf release]; // Set the field to first responder and move it into place [madelegate performSelector:@selector(moveAlert:) withObject:alertView afterDelay: 0.7f]; // Start the run loop CFRunLoopRun(); // Retrieve the user choices NSUInteger index = madelegate.index; NSString *answer = [[madelegate.text copy] autorelease]; if (index == 0) answer = nil; // assumes cancel in position 0 [alertView release]; [madelegate release]; return answer; } </code></pre> <p>Thanks!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload