2009-05-20 50 views
6

Đây có thể là một việc dễ dàng để thực hiện, nhưng tôi không thể tìm ra - làm cách nào để kết thúc chỉnh sửa ở chế độ xem văn bản? làm thế nào tôi có thể nhận được bàn phím để biến mất? hoặc tôi phải bấm vào bên ngoài nó để làm cho nó biến mất?iPhone - Sự cố với UITextView

Trả lời

10

Đầu tiên, một câu hỏi khá đơn giản như thế này khiến tôi tự hỏi liệu bạn đã thử đọc tài liệu hay tìm kiếm trên internet.

Tìm kiếm "Tài liệu Apple UITextView" cung cấp cho bạn this link tài liệu lớp học. Tương tự, here is tài liệu cho UITextViewDelegate.

Tìm kiếm "Ví dụ đơn giản UITextView" cung cấp cho bạn điều này useful example.

Tìm kiếm "Bàn phím loại bỏ UITextView", lần truy cập đầu tiên có vẻ như answer your question exactly. (Mặc dù anh ấy bỏ qua bàn phím trên phím trả lại, có thể không phải là thứ bạn muốn.) (Chỉnh sửa - có vẻ như từ nhận xét thứ hai của bạn chính xác là điều bạn muốn.)

P.S. Những người ở trên là chính xác, nếu một chút terse (dễ hiểu). Bạn cần triển khai UITextViewDelegate. Trong đại biểu đó, nếu bạn muốn ẩn bàn phím trên phím trả về, hãy triển khai shouldChangeTextInRange, tìm kiếm @ "\ n" và từ chối trả lời đầu tiên nếu bạn nhận được. Ngoài ra, hãy thêm nút "Hoàn tất chỉnh sửa" vào giao diện người dùng của bạn và từ chối trả lời đầu tiên nếu người dùng nhấn nút đó.

+0

vâng, google.com -> http://iphonedevelopertips.com/cocoa/how-to- bỏ qua-bàn phím-khi-sử dụng-một-uitextview.html – oberbaum

+3

SO có đầy đủ các "câu hỏi khá đơn giản [s]" và cảm ơn lòng tốt cho điều đó! –

2

Rất dễ dàng:

[myTextField resignFirstResponder]; 

sẽ làm các trick.

+3

TextView, không TextField – Unreality

0
[yourTextField resignFirstResponder]; 

sẽ làm cho bàn phím biến mất và kết thúc chỉnh sửa.

+3

TextView, không TextField – Unreality

2

Một cách để kết thúc chỉnh sửa, nhấn bên ngoài TextView, không hoàn toàn nhỏ. Việc chọn các chế độ xem văn bản hoặc trường văn bản khác hoặc kích hoạt điều khiển điều hướng sẽ kích hoạt ...

- (void)textViewDidEndEditing:(UITextView *)textView 

... trên bất kỳ đối tượng nào bạn đã chỉ định làm đại biểu của textView. Bạn có thể tự kích hoạt tính năng này bằng cách gọi ...

- (BOOL)endEditing:(BOOL)force 

... trên chế độ xem có chứa trường văn bản của bạn.

Giả sử tôi có UITextView bên trong UITableViewCell (bên trong UITable). Tôi muốn bật chỉnh sửa để kết thúc bằng cách nhấn vào bảng. Tôi có thể làm điều này:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapTable)]; 
    [[self tableView] addGestureRecognizer:tapRecognizer]; 
    [tapRecognizer release]; 
} 

- (void)didTapTable 
{ 
    [[self tableView] endEditing:YES]; 
} 

Bây giờ bất cứ khi nào tôi nhấn vào bảng, tôi kết thúc chỉnh sửa. Và, như những người khác đã nói, trong textViewDidEndEditing tôi nên chắc chắn để gọi [textView resignFirstResponder];

+0

Tôi nghĩ rằng endEditing sẽ gọi resignFirstResponder trên textView. Điều thú vị về endEditing là bạn không phải biết textView nào hiện đang được chỉnh sửa. endEditing sẽ tìm thấy nó cho bạn và đóng bàn phím. Từ các tài liệu. "Phương pháp này xem xét chế độ xem hiện tại và hệ thống phân cấp con của nó cho trường văn bản hiện là trả lời đầu tiên.Nếu nó tìm thấy một, nó sẽ yêu cầu trường văn bản từ chức như là người trả lời đầu tiên. Nếu tham số lực được đặt thành CÓ, trường văn bản sẽ không bao giờ được hỏi; nó buộc phải từ chức. " – JScarry

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