- (的CGRect)textRectForBounds:(的CGRect)边界不会被调用(- (C

2019-10-19 12:18发布

我试图移动文本内部UITextField ,使其垂直正确对齐。 我在网上搜索到,一切都指向编辑这些方法:

- (CGRect) textRectForBounds:(CGRect)bounds

- (CGRect) editingRectForBounds:(CGRect)bounds

虽然我已经编辑他们是这样的:

- (CGRect) textRectForBounds:(CGRect)bounds {
    NSLog(@"hi");
    return CGRectInset(bounds, 10, 10);
}

虽然它不会给NSLog的。

我也打过电话的文本框,但没有成功的方法

这是怎么了初始化文字意见,并设置起来:

-(void) viewWillAppear:(BOOL)animated {
    textfield1 = [[UITextField alloc] init];
    textfield2 = [[UITextField alloc] init];
    textfield3 = [[UITextField alloc] init];
    textfield4 = [[UITextField alloc] init];
    for (UITextField *text in [NSArray arrayWithObjects:textfield1, textfield2, textfield3, textfield4, nil]) {
        text.delegate = self;
        text.placeholder = [placeholders objectAtIndex:i];
        text.frame = CGRectMake(10, offsetTop, container.frame.size.width - 20, 40);
        [text textRectForBounds:text.bounds];
        [text editingRectForBounds:text.bounds];
        text.borderStyle = UITextBorderStyleRoundedRect;
        offsetTop += 50;
        i++;
        [container addSubview:text];
    }
}

Answer 1:

第1步 - 创建一个自定义文本字段myTextField将第一

@interface MyTextField : UITextField

第2步 - 覆盖myTextField将方法按您的要求

///place holder position

- (CGRect)placeholderRectForBounds:(CGRect)bounds
 {
   return CGRectInset(bounds, 8, 8);
 }
 // text position
 - (CGRect)textRectForBounds:(CGRect)bounds {

  return CGRectInset(bounds, 8,4);
 }

 // text position while editing
 - (CGRect)editingRectForBounds:(CGRect)bounds {

     return CGRectInset(bounds, 8, 4);
 }

步骤3:进口myTextField将在你的控制器类和让myTextField将对象

#import "MyTextField.h"

-(void) viewWillAppear:(BOOL)animated {

    MyTextField* textfield1 = [[MyTextField alloc] init];
    // and so on

}

现在每一个文本字段将正常工作。



文章来源: - (CGRect) textRectForBounds:(CGRect)bounds not being called