2014-06-12 24 views
9

Tôi gặp lỗi rất lạ khi cố gắng theo chiều ngang ở giữa văn bản trong đối tượng UITextField trong ứng dụng iOS 7+.UITextField căn chỉnh văn bản ngang - văn bản không được làm trung tâm

Tôi đã thiết lập một dự án mới để cách ly lỗi và đảm bảo rằng tôi không làm điều gì sai.

Trong viewDidAppear: phương pháp tôi alloc/init một UITextField dụ mới như thế này:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(60.0f, 100.0f, 200.0f, 200.0f)]; 
tf.backgroundColor = [UIColor orangeColor]; 
tf.textAlignment = NSTextAlignmentCenter; 

[self.view addSubview:tf]; 

Đó là tất cả. Khi tôi chạy ứng dụng mẫu này trên iPhone Retina (4-inch 64-bit) mô phỏng tôi nhận được sau kết quả:

enter image description here

Sau khi gõ vào một số chữ cái tôi có được điều này:

enter image description here

Có ai biết điều gì đang xảy ra không? Văn bản phải được căn giữa khi nhập. Tôi đã không gặp lỗi này cho đến bây giờ. Đó là iOS liên quan hoặc tôi đang làm điều gì đó sai?

P.s .: Nó cũng đang diễn ra trên iDevices.

Xin cảm ơn trước.

EDIT:

Thêm:

tf.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 
tf.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

không giúp được gì.

EDIT 2:

Giống như Inder Kumar Rathore đề nghị tôi đã cố gắng để thiết lập một chiều cao để 20.0f như vậy:

UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(60.0f, 100.0f, 200.0f, 20.0f)]; 

và nó đáng ngạc nhiên hoạt động. Nhưng nó không giải quyết vấn đề. Tôi phát hiện ra rằng việc tăng chiều cao từ 20.0f trở lên sẽ khiến vấn đề trở nên tồi tệ hơn. Tôi nghĩ rằng nó có liên quan gì với chiều cao dòng/chiều cao trường văn bản. Tôi không biết ..

+0

Hành vi lạ thường, mặc dù giảm chiều cao xuống 20 khiến nó hoạt động hoàn toàn tốt. –

+0

@InderKumarRathore Cảm ơn nhận xét của bạn. Tôi đã thử điều đó và tôi làm việc nhưng điều đó không giải quyết được vấn đề. Tôi cũng phát hiện ra rằng chiều cao tăng từ 20 lên làm cho vấn đề chỉ tồi tệ hơn. Giống như nó sẽ là một số loại vấn đề tỷ lệ kích thước liên quan. Tôi không có một đầu mối gì đang xảy ra:/ – damirstuhec

+1

UITextField được thiết kế để sử dụng cho một dòng văn bản. Tại sao bạn muốn tăng chiều cao của trường văn bản. bạn có thể muốn sử dụng UITextview –

Trả lời

1

Tôi nghĩ rằng UITextField hy vọng kích thước phông chữ dọc sẽ tương đương với chiều cao của trường văn bản. Nếu bạn tưởng tượng một phông chữ ở kích thước điểm sẽ lấp đầy chiều cao dọc của trường văn bản của bạn tại 200 điểm, bạn sẽ chỉ có thể nhập một vài ký tự trước khi nó lấp đầy chiều rộng ngang và chuyển từ hành vi trung tâm sang phải hành vi. Điều này có vẻ là hành vi trong "lỗi" của bạn ở trên, nơi bạn chỉ có thể nhập một vài ký tự trước khi nó chuyển đổi hành vi.

Tôi nghĩ rằng điều tốt nhất cần làm là làm cho trường văn bản của bạn đủ cao để vừa với phông chữ của bạn và căn giữa theo chiều dọc trong một số có chứa UIView.

+0

Có, nhưng điều này không giải thích hay giải quyết được vấn đề của tôi. Tôi đã biết rằng điều này sẽ "sửa chữa" vấn đề của tôi nhưng tôi muốn có một lời giải thích về nó. Dù sao, tôi sẽ chấp nhận câu trả lời của bạn bởi vì nó là một giải pháp. – damirstuhec

Các vấn đề liên quan