2012-12-31 38 views
1

有沒有辦法在調用setText之後限制UITextField的幀大小?所有其他問題似乎都與用戶編輯後基於字符串調整大小有關,或者在編輯時限制字符串本身的大小。需要限制UITextField的大小,而不受文本長度和文本編輯的影響

UITextField從IB初始化,然後在viewDidLoad中調用setText。 UITextFieldUINavigationBar上的UINavigationItem

- (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

會使用textField佔位符而不是設置textField值嗎? – Bill

+0

不幸的是,'setPlaceholder:'具有相同的效果。 – Bejmax

+0

不幸的是,我無法複製您的問題。使用佔位符時,文本字段的行爲與預期相同,方法是添加省略號以指示不可見的其他文本。 – Bill

回答

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]; 
} 
+0

我的視圖只支持肖像。只要用戶仍然可以輸入比容器視圖的大小更長的字符串,並在輸入時看到光標,這對我來說很有用(容器視圖是titleview)。今晚會試試這個。 – Bejmax

+0

就像一個魅力,事實上只是在IB中添加一個UIView作爲navBar中的titleView,將現有的UITextView放入其中,完成。 – Bejmax

相關問題