我在UIActionsheet中创建textField,但是我无法输入文本,任何人都可以了解它吗????
我的编码如下
-(void)commentsMethod: (id) sender {
//setup UITextField for the UIActionSheet
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 28, 320, 150)];
//textField.delegate=self;
textField.autocorrectionType = UITextAutocorrectionTypeNo;
[textField setBackgroundColor:[UIColor clearColor]];
[textField setBorderStyle:UITextBorderStyleRoundedRect];
[textField becomeFirstResponder];
//CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>)
UIButton *btn = [[UIButton alloc] init];
[btn setFrame:CGRectMake(0, 0, 100, 100)];
[btn setTitle:@"dismiss" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor clearColor]];
[btn addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
UIActionSheet *myActionSheet;
myActionSheet = [[UIActionSheet alloc] initWithTitle:@"Comments" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil, nil];
myActionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[myActionSheet showInView:self.view];
myActionSheet.userInteractionEnabled=YES;
[myActionSheet setFrame:CGRectMake(0, 20, 320,600)];
[myActionSheet insertSubview:textField atIndex:0];
[myActionSheet insertSubview:btn atIndex:1];
//[self.myActionSheet dismissWithClickedButtonIndex:0 animated:NO];
//memory management
[textField release];
[myActionSheet release];
}
答案 0 :(得分:2)
Hey Veer,你应该采取一种略微不同的方法。这就是我的建议。
.h文件代码
#import <UIKit/UIKit.h>
@interface trialViewController : UIViewController <UIActionSheetDelegate, UITextFieldDelegate> {
UITextField *TextField;
}
-(void) CreateSlideOut;
-(void) removePopUp;
-(void) slidePopup;
@end
.m代码
#import "trialViewController.h"
@implementation trialViewController
CGRect backToOriginal;
UIView *popup;
- (void)viewDidLoad {
[self CreateSlideOut];
[self slidePopup];
[super viewDidLoad];
}
-(void) CreateSlideOut
{
CGRect frame=CGRectMake(0, CGRectGetMaxY(self.view.bounds), 320, 480);
backToOriginal=frame;
popup=[[UIView alloc]initWithFrame:frame];
popup.backgroundColor = [UIColor orangeColor];
[self.view addSubview:popup];
}
-(void) slidePopup
{
UIButton *button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame=CGRectMake(60, 190, 200,40);
button.backgroundColor=[UIColor clearColor];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitle:@"Dismiss" forState:UIControlStateNormal];
[button addTarget:self action:@selector(DismissClicked:) forControlEvents:UIControlEventTouchUpInside];
TextField = [[UITextField alloc] initWithFrame:CGRectMake(20, 28, 280, 150)];
TextField.delegate=self;
TextField.autocorrectionType = UITextAutocorrectionTypeNo;
[TextField setBackgroundColor:[UIColor clearColor]];
[TextField setBorderStyle:UITextBorderStyleRoundedRect];
[popup addSubview:TextField];
[popup addSubview:button];
CGRect frame=CGRectMake(0, 0, 320, 480);
[UIView beginAnimations:nil context:nil];
[popup setFrame:frame];
[UIView commitAnimations];
}
-(void) removePopUp
{
[UIView beginAnimations:nil context:nil];
[popup setFrame:backToOriginal];
[UIView commitAnimations];
[TextField resignFirstResponder];
}
-(IBAction) DismissClicked : (id) sender
{
[self removePopUp];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"in textFieldShouldReturn");
[TextField resignFirstResponder];
return YES;
}
- (void)dealloc {
[super dealloc];
}
@end
使用它并更改滑出的背景颜色。如果您愿意,我可以提供自定义UIButtons的代码,并为您创建自定义颜色。干杯
答案 1 :(得分:0)
只有关键窗口会收到键盘通知,因此您必须将textField添加到关键窗口中。
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 28, 320, 150)];
// Configure your textField here:
UIWindow *appWindow = [UIApplication sharedApplication].keyWindow;
[appWindow addSubview:textField];