Iphone 我似乎无法重写UITextField leftViewRectForBounds方法

Iphone 我似乎无法重写UITextField leftViewRectForBounds方法,iphone,user-interface,uitextfield,uilabel,Iphone,User Interface,Uitextfield,Uilabel,大局:这就是我正在努力实现的目标。给某人发短信。UI/UX的外观应与此类似: 所以,目前,我使用的UITableView有3个单元格。To:和From:的前两个为44px高。我在UITableViewCell的contentView中放置了一个UITextField。一切都很好。我可以让用户编辑单元格的内容 现在,我使用leftView属性显示一个UILabel,其文本为:。它可以工作,但To标签始终位于UITextField的最左侧,如下面的img所示: 因此,根据SDK文档。左视图模式由

大局:这就是我正在努力实现的目标。给某人发短信。UI/UX的外观应与此类似:

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

现在,我使用leftView属性显示一个UILabel,其文本为:。它可以工作,但To标签始终位于UITextField的最左侧,如下面的img所示:

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

根据讨论:

您不应该调用此方法 直接地如果你想把 以不同的方式显示左侧覆盖视图 位置,则可以重写此方法 然后返回新的矩形

因此,我尝试了覆盖,但没有多大成功。如果有人有任何代码片段,我将不胜感激。在下面的图片中,我将From设置为From,这会对它进行一些修改,但我希望正确地进行修改。这就是我尝试过的:

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

和它的小变种,它似乎不工作,所以任何帮助是感激的。谢谢

如果未将textField作为customtextfield,则不会调用该方法。若要重写此方法,必须使用继承UITextField的custom textField类

如果未将textField作为customtextfield,则不会调用该方法。若要重写此方法,必须使用继承UITextField的custom textField类

你可以让你的课像下面这样

@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。

您的类可以如下所示

@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