2010-10-07 32 views
10

Làm cách nào để thêm nút rõ ràng (gạch chéo trong vòng tròn) cho chế độ xem văn bản như trong trường văn bản?Nút xóa trên UITextView

+0

Tôi đang làm điều đó thông qua XCODE. Tôi nên làm gì trong trường hợp này? – Abhinav

Trả lời

9

chỉ cần tạo một uibutton và đặt nó lên uitextview và đặt hành động của nó để xem văn bản rõ ràng;

uitextview.frame = (0,0,320,416); 

uibutton.frame = (310,0,10,10); 
[uibutton setimage:@"cross.png" forcontrolstate:uicontrolstatenoraml]; 
[uibutton addTarget:self action:@selector(clearButtonSelected:) forControlEvents:UIControlEventTouchUpInside]; 

-(void)clearButtonSelected{ 
    [email protected]""; 
} 

hy vọng bạn muốn xóa văn bản xem văn bản khi bạn click vào nút chéo trên được giúp nếu không hiểu thì tôi có thể gửi cho bạn chương trình thích hợp cho điều đó

+0

hoàn hảo. Cảm ơn. – Abhinav

+3

chạy vào cùng một nhu cầu, nơi để có được cross.png này? – tom

1

Không có gì được tích hợp sẵn như trong UITextField. Bạn sẽ phải tự thêm khung nhìn (có thể là UIButton) và đặt nó chính xác và bằng cách nào đó, lấy văn bản để quấn quanh nó một cách chính xác. (Và tôi không nghĩ rằng điều này thực sự có thể.)

Có thể thay vào đó bạn nên hiển thị thanh công cụ phía trên bàn phím (hoặc inputAccessoryView nếu bạn đang nhắm mục tiêu 3.2 trở lên) cung cấp nút rõ ràng.

0

Đối với tôi thay đổi .frame hoặc .contentInset properties không hoạt động.

Đối với tôi kết quả tốt nhất đến từ:

1) thêm một UIView với bộ điều khiển, cung cấp cho nó góc tròn và một biên giới để bắt chước một UITextView.

self.viewTextBackground.layer.borderColor = [UIColor colorWithRed:171/255.0 green:171/255.0 blue:171/255.0 alpha:1.0].CGColor; 
self.viewTextBackground.layer.borderWidth = 1.0f; 
self.viewTextBackground.layer.cornerRadius = 9.0f; 

2) đặt UITextXem trên đầu trang của UIView này. Đặt nó sao cho đường viền của UIView cơ bản vẫn hiển thị.

3) cung cấp cho các góc tròn UITextView:

self.textNote.layer.cornerRadius = 9.0f; 

3) Hãy chiều rộng fe của nó. 30 pixel so với UIView cơ bản. Bây giờ bạn có không gian cho một nút rõ ràng.

4) chỉ cần thêm UIButton vào bộ điều khiển của bạn và đặt nó ở góc trên cùng bên phải của UIView cơ bản.

5) thay đổi thuộc tính của nút: đặt loại thuộc tính thành 'tùy chỉnh' và đặt hình ảnh thành hình ảnh của một hình chữ thập màu xám.

6) ràng buộc một hành động để nút te xóa UITextView

11

Dựa trên câu trả lời từ GhostRider một chính xác hơn và lên đến thi date:

int kClearButtonWidth = 15; 
int kClearButtonHeight = kClearButtonWidth; 

//add the clear button 
self.clearButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButton.png"] forState:UIControlStateNormal]; 
[self.clearButton setImage:[UIImage imageNamed:@"UITextFieldClearButtonPressed.png"] forState:UIControlStateHighlighted]; 

self.clearButton.frame = CGRectMake(0, 0, kClearButtonWidth, kClearButtonHeight); 
self.clearButton.center = CGPointMake(self.textView.frame.size.width - kClearButtonWidth , kClearButtonHeight); 

[self.clearButton addTarget:self action:@selector(clearTextView:) forControlEvents:UIControlEventTouchUpInside]; 

[self.textView addSubview:self.clearButton]; 

Và phương pháp

- (void)clearTextView:(id)sender{ 
    self.textView.text = @""; 
} 

Bạn có thể sử dụng hình ảnh này cho hai trạng thái của nút:

UITextFieldButton UITextFieldButtonPressed

+0

Một câu trả lời hoàn hảo, nhưng với sự nhấn mạnh của XCode 6 về việc sử dụng AutoLayout, tôi đã phải từ bỏ việc tạo nút lập trình, vì bạn phải thêm Ràng buộc để đảm bảo nó xuất hiện ở đúng vị trí. Cuối cùng, tôi đã thêm một UIButton trực tiếp vào bảng phân cảnh và thay vào đó thêm các ràng buộc. (Sigh ...) –

5

Từ góc độ sản phẩm, nếu bạn đang đi để có một nút rõ ràng, bạn có thể muốn sử dụng một UITextField thay vì một UITextViewUITextField hỗ trợ một nút rõ ràng natively - thiết lập các clearButtonMode tài sản như vậy:

UITextField *textfield = ...; 
textfield.clearButtonMode = UITextFieldViewModeAlways; 

Xem ảnh chụp màn hình:

enter image description here

Bạn có thể sử dụng UITextFieldViewModeWhileEditing để chỉ hiển thị nút rõ ràng trong khi người dùng đang chủ động cập nhật nội dung.

+0

Cảm ơn! Chính xác những gì tôi cần. – ninjudd

+5

(Sigh.) Câu hỏi đặt ra là làm thế nào để thêm một nút Clear vào một UITextView (không phải là UITextField) ... và DOESN'T không có hàm thành viên ClearButtonMode ... !! –

+0

@Mike Gledhill, vừa cập nhật câu trả lời để giải quyết nhận xét của bạn, tôi nghĩ rằng có điều gì đó như xóa 'UITextView', bạn nên tắt bằng nút rõ ràng (tức là 'UIButton'). Tôi chỉ không thấy một nút X rõ ràng sẽ hoạt động như thế nào với chế độ xem văn bản nhiều dòng. – Zorayr

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