UITextField 键盘无法输入任何内容

Posted

技术标签:

【中文标题】UITextField 键盘无法输入任何内容【英文标题】:UITextField keyboard can't type anything 【发布时间】:2012-06-25 18:01:39 【问题描述】:

将 xib 文件加载为 UIView,然后我从 Xib 文件中获得了 UITextField(它只是一个包含文本字段和按钮的视图)。 但是当应用程序启动并且该文本字段出现时。我无法在此 UITextField 上键入任何字母。 但是将文本粘贴到那个 UITextField 就可以了。为什么? 这是我的添加代码

-(IBAction)showSheet    
    UIView *myView = [[[NSBundle mainBundle] loadNibNamed:@"LoginViewComp" owner:self options:NULL] lastObject];    
     [myView setFrame:CGRectMake(0, 44, 320, 400)];

    UIButton *btn1 = (UIButton *)[myView viewWithTag:101];
    UITextField *field = (UITextField *)[myView viewWithTag:102];
    UILabel *lbl = (UILabel *)[myView viewWithTag:103];    

    [field setEnabled:YES];

    [btn1 addTarget:self action:@selector(testBtn1) forControlEvents:UIControlEventTouchUpInside];

    DTActionSheet *sheet = [[DTActionSheet alloc] initWithContentView:myView sheetTitle:@"Demo"];
    [sheet showInView:self.view];
    [sheet setUserInteractionEnabled:YES];


-(void)testBtn1
    NSLog(@"btn1 touch up inside");     

@end

DTActionSheet.m

@interface DTActionSheet()
@property (nonatomic,strong) UIView* contentView;
@property (nonatomic,strong) UIToolbar* toolBar;
@end

@implementation DTActionSheet
@synthesize contentView=_contentView;
@synthesize toolBar=_toolBar;

-(id)initWithContentView:(UIView*)contentView sheetTitle:(NSString*)title;

    self = [super init];
    if (self) 
    
        _contentView = contentView;
        int btnnum = (contentView.frame.size.height-5)/50; // (height+44-20-25)/50
        for(int i=0; i<btnnum; i++)
        
            [self addButtonWithTitle:@" "];
        
        _toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
        _toolBar.barStyle = UIBarStyleBlackOpaque;

        UIBarButtonItem *titleButton = [[UIBarButtonItem alloc] initWithTitle:title 
                                                                        style:UIBarButtonItemStylePlain 
                                                                       target:nil 
                                                                       action:nil];

        UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                                                                        style:UIBarButtonItemStyleDone 
                                                                       target:self
                                                                       action:@selector(done)];

        UIBarButtonItem *leftButton  = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" 
                                                                        style:UIBarButtonItemStyleBordered 
                                                                       target:self 
                                                                       action:@selector(cancel)];

        UIBarButtonItem *fixedButton  = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                                                                                      target:nil 
                                                                                      action:nil];

        [_toolBar setItems: [NSArray arrayWithObjects:leftButton,fixedButton,titleButton,fixedButton,rightButton,nil]];

        [self addSubview:_toolBar];
        [self addSubview:_contentView];
    
    return self;


-(void)done

    [self dismissWithClickedButtonIndex:0 animated:YES];

-(void)cancel

    [self dismissWithClickedButtonIndex:0 animated:YES];

@end

嘿,伙计们,有什么想法吗?

【问题讨论】:

你能确保你的文本字段的代理工作吗? 你解决问题了吗?? 【参考方案1】:

尝试使用 UIKeyInput 协议参考进行输入 -- http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIKeyInput_Protocol/Reference/Reference.html

确保使用它的委托..

【讨论】:

以上是关于UITextField 键盘无法输入任何内容的主要内容,如果未能解决你的问题,请参考以下文章

在键盘应用程序扩展中使用 UITextField

iOS7 模拟器中的 UITextField 不接受来自 mac 键盘的任何输入

如何在 UITextField 子类中拦截来自键盘的文本输入事件

触摸 UITextField 以外的任何地方时如何关闭键盘(快速)?

单击已显示键盘的第二个UITextField会错误地移动内容

iOS 键盘自适应(IQKeyboardManager)使用小结