以编程方式创建的自定义UITextField不会弹出键盘

时间:2012-05-04 17:45:44

标签: ios uitextfield custom-view uitextfielddelegate

我为iPhone上的文本字段设计了自定义外观。我决定创建一个类

MYTextField : UIView <UITextFieldDelegate>

我有一个方法

- (id)initWithPlaceholder:(NSString*)placeholder position:(CGPoint) position

创建一个具有所需视图和外观的UITextField。

源代码如下:

- (id)initWithPlaceholder:(NSString*)placeholder position:(CGPoint) position {
    if (self = [super initWithFrame:CGRectMake(position.x, position.y, TEXTFIELD_WIDTH, TEXTFIELD_HEIGHT)]) {
        UITextField *textField = [[[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)] autorelease];
        textField.borderStyle = UITextBorderStyleRoundedRect;
        textField.font = [UIFont systemFontOfSize:15];
        textField.placeholder = @"enter text";
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        textField.keyboardType = UIKeyboardTypeDefault;
        textField.returnKeyType = UIReturnKeyDone;
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
        textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;    
        [textField setUserInteractionEnabled:YES];
        textField.delegate = self;

        [self addSubview:textField];
    }
    return self;
}

问题在于,在调用方法时,UITextField是可见的,但在点击文本字段时,键盘不显示。

我有什么遗失的吗?

PS:我在Stackoverflow上发现了几个类似的问题,但没有一个解决方案似乎对我有用。 :(

1 个答案:

答案 0 :(得分:1)

这里的问题可能是textfields框架不在UIView的框架内。为什么使用TEXTFIELD_WIDTH作为self.frame而不是textfield.frame?

另外,为什么要将UIView子类化为UITextField?