【问题标题】:I cannot seem to override UITextField leftViewRectForBounds method我似乎无法覆盖 UITextField leftViewRectForBounds 方法
【发布时间】:2011-03-17 15:52:15
【问题描述】:

大局:这就是我想要实现的目标。向某人发送短信。 UI/UX 应该类似于以下内容:

所以,目前,我正在使用带有 3 个单元格的 UITableView。前两个(对于“To:”和“From:”)是 44px 高。我在 UITableViewCell 的“contentView”中放置了一个 UITextField。一切都是好的。我可以让用户编辑单元格的内容。

现在,我使用 leftView 属性来显示带有文本“To:”的 UILabel。它可以工作,但“To”标签始终位于 UITextField 的最左侧(如下图所示):

因此,根据 SDK 文档。左视图模式由以下方法决定: leftViewRectForBounds:

根据讨论:

你不应该调用这个方法 直接地。如果你想放置 在不同的左侧覆盖视图 位置,您可以覆盖此方法 并返回新的矩形。

所以,我尝试覆盖但没有取得多大成功。如果有人有任何代码sn-ps,我将不胜感激。在底部图片中,我将“From”设置为“From”,这有点“破解”它,但我想正确地做到这一点。这是我尝试过的:

// override leftViewRectForBounds method:
- (CGRect)leftViewRectForBounds:(CGRect)bounds{
    CGRect leftBounds = CGRectMake(bounds.origin.x + 30, 0, 45, 44);
    return leftBounds;
}

和它的小变种,它似乎不起作用,所以任何帮助表示赞赏。谢谢!!!

【问题讨论】:

    标签: iphone user-interface uitextfield uilabel


    【解决方案1】:

    你的课程可以像下面这样

    @interface MyTextField : UITextField
    {
       //Declare your variable  here    
    }
    @end
    
    @implementation MyTextFiled
    
    // override leftViewRectForBounds method:
    - (CGRect)leftViewRectForBounds:(CGRect)bounds{
        CGRect leftBounds = CGRectMake(bounds.origin.x + 30, 0, 45, 44);
        return leftBounds;
    }
    

    使用 MyTextField 代替 UITextField。

    【讨论】:

      【解决方案2】:

      如果您没有将 textField 用作 customtextfield,则不会调用该方法。要覆盖此方法,您必须采用继承 UITextField 的自定义 textField 类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-24
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多