如何在UIAextField中的UITextField中启用文本输入?

时间:2011-02-23 10:10:03

标签: iphone uitextfield uiactionsheet

我在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];        
}

2 个答案:

答案 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];