[EDIT] Hmm. Perhaps this question should be titled ‘what is the default user-input dialog view called in CocoaTouch?’ I realize that I can create an entire view that is exactly what I want, and wrap it in a view controller and presentModalView — but I was sort of hoping that there was a standard, normal user-input ‘dialog’ view that came-with Cocoa-touch. ‘Enter your name’, ‘enter text to search’, etc., are VERY common things!
Anyway… here’s the question as I originally asked it:
This code:
UIAlertView* find = [[UIAlertView alloc] init]; [find setDelegate:self]; [find setTitle:@'Find']; [find addButtonWithTitle:@'Cancel']; [find addButtonWithTitle:@'Find & Bring']; [find addButtonWithTitle:@'Find & Go']; [find addButtonWithTitle:@'Go To Next']; [find addSubview:_findText]; CGRect frm = find.frame; int height = frm.size.height + _findText.frame.size.height + 100; // note how even 100 has no effect. [find setFrame:CGRectMake(frm.origin.x, frm.origin.y, frm.size.width, height)]; [find setNeedsLayout]; [find show]; [find release];
Produces this Alert view:
Find Alert http://www.publicplayground.com/IMGs/Misc/FindAlert.png
(I started with the code from this question by emi1Faber, and it works as advertised; however, as I state in my comment, the cancel button overlays the text field.)
How do I reshuffle everything to make the text field fit properly? [findAlert setNeedsLayout] doesn’t seem to do anything, even after I [findAlert setFrame:tallerFrame]. Hints?
Thanks!
The simplest (and most proper way) to move the text view down is to add a message
Also, the reason your frame isn’t taking effect is that
-showsets the frame and creates the view hierarchy before starting the animation. You should also make the text view the first responder so the keyboard pops up.Full example:
Note: You can also modify the subviews of UIAlertView, but since Apple has already changed the UIAlertView layout once you should check their class descriptions and frames against known values before setting new ones. You can even get something like this:
(source: booleanmagic.com)