有没有办法在调用setText后限制UITextField
的帧大小?所有其他问题似乎都与用户编辑后根据字符串调整大小有关,或者在编辑时限制字符串本身的大小。
UITextField从IB初始化,然后在viewDidLoad中调用setText。 UITextField
是UINavigationItem
上的UINavigationBar
。
- (void)viewDidLoad {
[super viewDidLoad];
NSString *theURL = [NSString stringWithFormat:@"http://stackoverflow.com/questions/ask/ThisIsABogusURLForExamplePurposes.htm"];
[_addressBar setText:theURL];
}
在这种情况下,我确实需要用户能够编辑字符串,但它也是在第一次显示视图时在代码中设置的。在IB中,我将宽度设置为所需的最大宽度,如果我用一个小字符串填充UITextField
,它仍保持该大小。但是,使用任何导致文本超出字段宽度的字符串调用setText会导致它将UITextField
宽度拉伸到UINavigationBar
的全长。我试图以编程方式设置调用setText后字段的帧大小,但似乎没有效果。
感谢您的帮助!
答案 0 :(得分:1)
我遇到了类似的问题,但是我无法使用界面构建器解决它。我所做的是以编程方式将固定大小的地址栏添加到特定大小的UIView。然后将此UIView设置为导航项的titleView。
这左对齐文本字段,并在您旋转设备时再次重新计算其位置(这就是为什么我重写了viewWillLayoutSubviews)。
- (void)viewWillLayoutSubviews
{
NSString *theURL = [NSString stringWithFormat:@"http://stackoverflow.com/questions/ask/thisIsABogusURLForExamplePurposes.htm"];
UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.navigationController.navigationBar.frame.size.width, 30.0)];
UITextField *addressBar = [[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 200.0, 30.0)];
[addressBar setBorderStyle:UITextBorderStyleRoundedRect];
[addressBar setText:theURL];
[containerView addSubview:addressBar];
[[self navigationItem] setTitleView:containerView];
}