Как включить ввод текста в UITextField, который находится в UIActionSheet? - PullRequest
2 голосов
/ 23 февраля 2011

Я создаю textField в UIActionsheet, но я не могу ввести текст, может у кого-нибудь есть представление об этом ????

моя кодировка выглядит следующим образом

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

2 голосов
/ 23 февраля 2011

Привет, Вир, есть немного другой подход, который вы должны использовать здесь.Вот что я предлагаю.

.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

Используйте его и измените цвет фона слайда.Если вы хотите, я могу дать коды, которые настраивают ваши кнопки UIB и создают пользовательские цвета для использования.Приветствия

0 голосов
/ 27 февраля 2014

Только окно ключей получает уведомления от клавиатуры, поэтому вам нужно добавить текстовое поле в окно ключа.

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

UIWindow *appWindow = [UIApplication sharedApplication].keyWindow;
[appWindow addSubview:textField];
...