【问题标题】:UITextField -- Adding UIView for leftView - Can't get FocusUITextField - 为 leftView 添加 UIView - 无法获得焦点
【发布时间】:2013-01-03 23:31:57
【问题描述】:

我的应用程序中的 UITextFields 定义了占位符文本(在 Interface Builder 中),当我点击占位符文本占用的区域时,我无法使这些字段获得焦点(即显示键盘并允许编辑)。如果我在占位符文本之外的区域中点击文本字段(尽管仍在文本文件本身的范围内),它会正常工作(即键盘弹出,我可以编辑文本字段的内容)。我该如何解决这个问题?

谢谢。

编辑 1

好的,我想我明白了。我还为这些 UITextFields 的“leftView”属性设置了一个空白视图。如果我删除它,您可以触摸占位符文本区域中的 UITextFields,它会按预期做出反应;我需要这个左视图的视图。如果你把这个 spacer view 的背景颜色改成红色,你可以看到它完全没有碍事,所以我不知道出了什么问题。

为什么这段代码会导致这个问题?

谢谢。

+(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;
    }
}

【问题讨论】:

  • 如何设置占位符文本?
  • 首先,当我将 UITextField 拖到 Interface Builder 上时,其中没有默认文本。我正在使用 XCode 4.3.2。您是否在 GUI 设计器中分配文本?告诉我更多:-)
  • @trumpetlicks 占位符文本可以直接在 IB 的属性检查器中设置。 OP说他在IB中设置了它。顺便说一下,占位符与默认文本不同。
  • 我刚刚测试了将文本放入“文本”并分别放入“界面”构建器的“占位符”字段中,它们似乎工作正常。您的 UITextField 的其他设置是什么?您是否实施了任何动作,或基于笔划的例程?而且我知道,占位符文本实际上只是一个不可编辑的字段,主要用于提醒用户应该输入什么,而“文本”属性确实可以由应用程序用户编辑(如果您的设置允许的话)。
  • 我不得不承认,我正在尝试重现您的问题,我什至有 2 个 UITextFields,1 个委托给 UIViewController,而一个没有,并且键盘仍然为两者提供。它们都有占位符文本,没有“文本”文本,并且检查了所有相同的参数。

标签: objective-c ios interface-builder uitextfield


【解决方案1】:

刚遇到同样的问题,不想子类化,只好使用:

leftWrapper.userInteractionEnabled = NO;

【讨论】:

    【解决方案2】:

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

    Indent the text in a UITextField

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-23
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多