【问题标题】:Providing editable and non-editable fields on the iPhone在 iPhone 上提供可编辑和不可编辑的字段
【发布时间】:2010-10-16 11:01:32
【问题描述】:

我想以不可编辑的方式向我的应用程序用户呈现信息,但允许在按下按钮(编辑按钮)后进行编辑。有什么方法可以轻松创建从不可编辑到可编辑的过渡?

我已经考虑将UILabels 用于不可编辑的字段,并以编程方式将它们删除并改为显示UITextFields。但是,这似乎会将很多格式放入我不想做的代码中(以保持 IB 的优势)。

我还考虑将UILabelUITextField 放在我笔尖的同一个位置,并试图隐藏我不想要的那个。不过,这似乎很 hacky。

也许我最好使用两个单独的视图?

任何关于上述方法或更好方法的 cmet 将不胜感激。

【问题讨论】:

    标签: iphone uitextfield uilabel


    【解决方案1】:

    如果您将 UITextField 的启用属性设置为 NO 并将边框样式更改为 UITextBorderStyleNone 您的文本字段看起来几乎像 UILabel。 也许您想切换这两个值.. 像这样:
    编辑:如果您更改字体,它们看起来与 UILabel 完全一样。

    - (IBAction)toggleEdit:(id)sender {
        for (id subview in self.view.subviews) {
            if ([subview isKindOfClass:[UITextField class]]) {
                BOOL isEnabled = ((UITextField*)subview).enabled;
                ((UITextField*)subview).enabled = !isEnabled;
                if (isEnabled) {
                    // Disable
                    ((UITextField*)subview).borderStyle = UITextBorderStyleNone;
                    ((UITextField*)subview).font = [UIFont systemFontOfSize:17.0];
                }
                else {
                    // Enable
                    ((UITextField*)subview).borderStyle = UITextBorderStyleRoundedRect;
                    ((UITextField*)subview).font = [UIFont systemFontOfSize:12.0];
                }
            }
        }
    }
    

    【讨论】:

    • 太棒了,谢谢。我试过textField.enabled 来达到这个效果,但我觉得我做得太早了。边框和字体也可以完美地工作。 而且我了解了 self.view.subviews!
    【解决方案2】:

    正如fluchtpunkt 回答的那样,您也可以这样做。否则,您可以提供一个标签和一个具有相同帧大小的文本字段。在可编辑的 true 上,您可以隐藏显示文本字段的标签。对于编辑 false,您可以在隐藏文本字段时显示标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2019-11-09
      • 2011-05-25
      • 1970-01-01
      相关资源
      最近更新 更多