小编rob*_*ert的帖子

iOS 8中具有动态高度的自定义inputView

我的自定义inputView for有些麻烦UITextFields.根据用户需要输入的文本UITextField,inputView仅显示所需的字母.这意味着对于短文本,只有一行字母的inputView就足够了,较长的文本可能需要2行甚至3行,因此inputView的高度是变量.

由于我期望性能更好,因此每个textField只使用一个inputView实例.这样创建必须只发生一次,这使得有时需要直接访问inputView更容易.inputView已设置- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField,设置其所需的高度并将显示.

这很有效,但不适用于iOS8.有一些包含inputView的系统视图在更改时不会更新其框架以匹配inputView的边界(第一次工作).

我知道可以通过每个textField使用我的inputView的一个实例来修复.但我问是否有一种推荐/更好的方法来调整框架或将其更改报告给包含视图.也许这是一个iOS8错误,可以修复,直到发布?

以下是重现问题的一些示例代码:

CustomInputView

@implementation CustomInputView

+ (CustomInputView*)sharedInputView{
    static CustomInputView *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[CustomInputView alloc] init];
    });
    return sharedInstance;
}

- (id)init
{
    self = [super init];
    if (self) {
        self.backgroundColor = [UIColor greenColor];
    }
    return self;
}

- (void)setupForTextField:(UITextField*)textField{
    CGFloat height;

    if(textField.tag == 1){
        height = 100;
    }else height = 50;

    self.frame = CGRectMake(0, 0, 320, height);
}
@end
Run Code Online (Sandbox Code Playgroud)

TestViewController代码

- (void)viewDidLoad
{ …
Run Code Online (Sandbox Code Playgroud)

ios ios8

9
推荐指数
1
解决办法
3935
查看次数

标签 统计

ios ×1

ios8 ×1