2011-02-23 40 views
2

我在UIActionsheet中創建textField,但我不能輸入文本,任何人都可以有想法嗎?如何在UIActionSheet中的UITextField中啓用文本輸入?

我的編碼是遵循

-(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

爲什麼你無法輸入文字? – Vladimir 2011-02-23 10:12:34

+0

無論我在鍵盤上點擊,例如A B C D ,,,,在textField中什麼也看不到, – 2011-02-23 10:19:14

回答

2

嘿德維爾,有一個稍微不同的方法,你應該在這裏拍攝。這是我的建議。

.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併爲你使用創建自定義顏色。乾杯

0

只有關鍵窗口接收到鍵盤通知,所以你必須將你的textField添加到關鍵窗口。

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 28, 320, 150)]; 
// Configure your textField here: 

UIWindow *appWindow = [UIApplication sharedApplication].keyWindow; 
[appWindow addSubview:textField]; 
相關問題