2012-05-30 89 views
3

我的应用程序中的UITextFields已经定义了占位符文本(在Interface Builder中),并且我无法使这些字段获得焦点(即显示键盘并允许编辑)我点击占位符文本占用的区域。如果我点击占位符文本区域外的文本区域(虽然仍然在文本文件本身的范围内),它就像正常一样(即弹出键盘并且我可以编辑文本区域的内容)。我怎样才能解决这个问题?UITextField - 为leftView添加UIView - 无法获取焦点

谢谢。

编辑1

好吧,我想我已经得到了它。我还为这些UITextFields的“leftView”属性设置了一个空白视图。如果我删除它,您可以触摸占位符文本区域中的UITextFields,并按预期做出反应;不过,我需要这个视图。如果您将此隔离视图的背景颜色更改为红色,您可以看到它完全不妨碍,所以我不知道发生了什么问题。

为什么此代码会导致此问题?

谢谢。

+(UIView*)getTextFieldLeftSpacerViewWithBackgroundColor:(UIColor*)backgroundColor andHeight:(CGFloat)height 
{ 
    UIView *leftWrapper = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 8.0f, height)]; 
    leftWrapper.autoresizingMask = UIViewAutoresizingNone; 
    [leftWrapper setOpaque:YES]; 
    if(backgroundColor){leftWrapper.backgroundColor = backgroundColor;} 
    else{leftWrapper.backgroundColor = [UIColor clearColor];} 
    return [leftWrapper autorelease]; 
} 

+(void)setTextFieldLeftSpacerForTextFieled:(UITextField*)textField 
{ 
    if(textField) 
    { 
     UIView *spacer = [MYViewController getTextFieldLeftSpacerViewWithBackgroundColor:nil andHeight:textField.bounds.size.height]; 
     textField.leftView = spacer; 
     textField.leftViewMode = UITextFieldViewModeAlways; 
    } 
} 
+0

你是如何设置的占位符文本? – jlehr

+0

因此,首先,当我将UITextField拖放到Interface Builder上时,其中没有默认文本。我正在使用XCode 4.3.2。你在GUI Designer中分配文本吗?告诉我更多:-) – trumpetlicks

+0

@trumpetlicks占位符文本可以直接在IB的属性检查器中设置。 OP说他把它放在IB中。顺便说一句,占位符与默认文本不同。 – jlehr

回答

1

我放弃了这种方法。我选择了UITextField的子类并为UITextField中的文本边界提供偏移CGRects,而不是使用不可见视图来偏移文本。下面的SO职位是非常有帮助的:

Indent the text in a UITextField

5

恰好碰到了同样的问题,不想子类,刚使用方法:

leftWrapper.userInteractionEnabled = NO;