UITextfiled的leftView属性在Objective-C中不起作用[重复]

Posted

技术标签:

【中文标题】UITextfiled的leftView属性在Objective-C中不起作用[重复]【英文标题】:leftView property of UITextfiled Not working in Objective-C [duplicate] 【发布时间】:2019-09-18 17:46:47 【问题描述】:
textSearchField.hidden = NO;
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(10, 5, 50, 20)];
textSearchField.leftView = paddingView;
textSearchField.leftViewMode = UITextFieldViewModeAlways;
[search_view addSubview:textSearchField];

我想使用Objective-CUITextfield 添加左填充 - 10 像素。如果有其他解决方案?

【问题讨论】:

***.com/questions/3727068/… 我尝试了两种解决方案。 1. 自定义文本字段类别 - 但它将在整个应用程序中应用所有文本字段。 2. 使用 lefteview 属性 - 上面的代码对我不起作用。 x 和 y 位置没有变化。 @BhaveshNayi,所有人在遇到代码问题时只会来到***。我知道这个现有的问题。我想知道这个代码对我不起作用。 @Seethalakshmi_user8943692 我认为问题出在添加文本字段时。检查我的答案并告诉我。 【参考方案1】:

//试试这个

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.placeholder = @"enter text";
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[self.view addSubview:textField];

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(10, 5, 50, 20)];
paddingView.backgroundColor = [UIColor darkGrayColor];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;

查看图片

【讨论】:

textSearchField.hidden = NO; [search_view addSubview:textSearchField]; UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(10, 5, 50, 20)]; paddingView.backgroundColor = [UIColor darkGrayColor]; textSearchField.leftView = paddingView; textSearchField.leftViewMode = UITextFieldViewModeAlways;在这里,没有改变 x 和 y 的位置。 它的工作与否? 没有。不工作。 @Seethalakshmi_user8943692 检查我更新的答案。它在我身边工作正常。检查附件图片 @Seethalakshmi_user8943692 你检查我更新的答案了吗?【参考方案2】:

您可以使用以下代码以编程方式创建:

CGRect someRect = CGRectMake(0.0, 0.0, 100.0, 30.0);
DKTextField* textField = [[DKTextField alloc] initWithFrame:someRect];
textField.padding = 1.0
[self.view addSubview:textField];

为它使用下面的类

DKTextField.h

#import <UIKit/UIKit.h>

@interface DKTextField : UITextField

@property (nonatomic) IBInspectable CGFloat padding;

@end

DKTextField.m

#import "DKTextField.h"

IB_DESIGNABLE
@implementation DKTextField

@synthesize padding;

-(CGRect)textRectForBounds:(CGRect)bounds
    return CGRectInset(bounds, padding, padding);


-(CGRect)editingRectForBounds:(CGRect)bounds
    return [self textRectForBounds:bounds];


@end

您只需将您选择的UITextField 提供给DKTextField

无论你想要什么填充,只要像下图一样添加它。

【讨论】:

我试过这个。但它将在整个应用程序中应用所有文本字段。但我只需要特定的控制器。 此解决方案也适用于单个文本字段,您只需更改特定视图控制器中文本字段的类并为所有其他控制器使用默认文本字段类。 它不在情节提要中。我以编程方式创建了文本字段。 @Seethalakshmi_user8943692 如果 UITextField.就是这样。 @Seethalakshmi_user8943692 我已经用编程方式创建 uitextfield 的代码更新了我的答案。【参考方案3】:

textSearchField = [[UITextField alloc] initWithFrame:CGRectMake(5, 5, screenWidth - 10 - 40, search_height- 10)];

textSearchField.borderStyle = UITextBorderStyleRoundedRect;
textSearchField.font = [UIFont systemFontOfSize:15];
textSearchField.placeholder = @"Search...";
textSearchField.autocorrectionType = UITextAutocorrectionTypeNo;
textSearchField.keyboardType = UIKeyboardTypeDefault;
textSearchField.returnKeyType = UIReturnKeySearch;
textSearchField.clearButtonMode = UITextFieldViewModeWhileEditing;
textSearchField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
textSearchField.delegate = self;

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(10, 5, 50, 20)];
paddingView.backgroundColor = [UIColor darkGrayColor];
textSearchField.leftView = paddingView;
textSearchField.leftViewMode = UITextFieldViewModeAlways;[![enter image description here][1]][1]

【讨论】:

以上是关于UITextfiled的leftView属性在Objective-C中不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

UITextFiled 的运行时属性

你有没有忽略TextField的leftView这个属性

文本字段的运行时属性

iOS textFiled 在storyBoard中的使用

iOS 13:带有 LeftView 间距问题的 UITextField - Xcode 11

禁用 UITextField 时如何在 leftView/rightView 中启用点击?