【问题标题】:how to enable text input in UITextField which is in UIActionSheet?如何在 UIActionSheet 中的 UITextField 中启用文本输入?
【发布时间】:2014-02-27 16:19:25
【问题描述】:

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

【问题讨论】:

  • 为什么不能输入文字?
  • 无论我在键盘上点击什么,例如 A B C D,,,, textField 中什么都看不到,

标签: iphone uitextfield uiactionsheet


【解决方案1】:

嘿,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 并创建自定义颜色供您使用的代码。干杯

【讨论】:

    【解决方案2】:

    只有按键窗口接收键盘通知,所以你必须将你的 textField 添加到按键窗口中。

    UITextField *textField    = [[UITextField alloc] initWithFrame:CGRectMake(0, 28, 320, 150)];
    // Configure your textField here:
    
    UIWindow *appWindow = [UIApplication sharedApplication].keyWindow;
    [appWindow addSubview:textField];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多