Bạn cũng có thể sử dụng các phương pháp UITextFieldDelegate (IMHO, dễ bảo quản hơn các quan sát viên key-value):
#pragma mark -
#pragma mark UITextFieldDelegate methods
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
_field.background = [UIImage imageNamed:@"focus.png"];
return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
_field.background = [UIImage imageNamed:@"nofocus.png"];
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Điều này chỉ hoạt động khi thuộc tính UITextField.borderStyle thuộc bất kỳ kiểu nào nhưng UITextBorderStyleRoundedRect (trong trường hợp đó, thuộc tính nền không được tính đến). Điều này có nghĩa bạn có thể sử dụng đoạn mã trên với UITextBorderStyleBezel, UITextBorderStyleLine và UITextBorderStyleNone, như được giải thích trong tài liệu borderStyle:
borderStyle
Phong cách biên giới được sử dụng bởi các trường văn bản.
@property (nonatomic) UITextBorderStyle borderStyle
Thảo luận
Giá trị mặc định cho thuộc tính này là UITextBorderStyleNone. Nếu một hình nền tùy chỉnh được đặt, thuộc tính này sẽ bị bỏ qua.
Đây là tài liệu hướng dẫn cho các tài sản của nền UITextField:
nền
Hình ảnh biểu thị sự xuất hiện nền của trường text khi nó được kích hoạt.
@property (nonatomic, giữ lại) UIImage * nền
Thảo luận
Khi đặt, hình ảnh được gọi bằng khách sạn này thay thế các tiêu chuẩn xuất hiện điều khiển bởi thuộc tính borderStyle. Hình nền hình ảnh được vẽ ở phần biên giới hình chữ nhật của hình ảnh. Hình ảnh bạn sử dụng cho nền văn bản của trường văn bản có thể kéo dài để vừa.
Nguồn
2010-01-03 15:47:58
cảm ơn vì đã đề cập đến borderStyle. Điều này nên được đề cập trong tài liệu cho thuộc tính nền của UITextField – DonnaLea
Tôi đã tìm thấy lỗi trong văn bản của bạn. nếu UITextField là với các góc tròn thì nó bỏ qua tất cả các hình nền. Không phải ngược lại – Gargo