2009-05-14 33 views

Trả lời

1

Không có cách nào để ngăn chúng di chuyển con trỏ. Bạn có thể, tuy nhiên, ngăn cản họ chỉnh sửa các văn bản ngoại trừ ở cuối bằng cách thực hiện phương pháp

– textField:shouldChangeCharactersInRange:replacementString:

trong đoàn trường văn bản của bạn.

Chỉnh sửa: bạn cũng có thể đặt userInteractionEnabled thành NO để người dùng không thể nhấn vào trường. Gọi becomeFirstResponder theo cách thủ công để trường lấy nét từ khi người dùng không thể nhấn để lấy nét.

+0

Đó là những gì tôi có bây giờ nhưng nó kinda wonky cho người dùng khi họ di chuyển con trỏ và sau đó gõ một phím và các ký tự nối thêm vào cuối chuỗi. Không lý tưởng ... nhưng không gây tử vong. Tìm kiếm một cách dễ dàng để vô hiệu hóa các chạm trên UITextField. Có thể đi tuyến đường con nếu đó là lựa chọn duy nhất của tôi. – Meltemi

+0

Tôi có thể hỏi bạn đang cố gắng làm gì không? Tại sao không cho phép đặt con trỏ? Nhưng vâng, có vẻ như chỉ thiết lập userInteractionEnabled = NO sẽ là giải pháp tốt nhất. –

0

Tôi không biết rằng có một cách tích hợp để làm điều đó ... có lẽ bạn có thể phân lớp UITextField và xử lý các sự kiện liên lạc chính mình?

0

Tôi chưa kiểm tra xem bạn có thể tắt kính lúp hay không, nhưng cách được khuyến nghị để tắt chức năng chỉnh sửa có chọn lọc trong UIResponder (và do đó UITextField) là triển khai canPerformAction:withSender của UIResponder.

Xem UIResponder documentation.

Có thể nếu bạn trả lại "KHÔNG" cho lựa chọn và chọnTất cả hành động, bạn có thể tắt nó.

Cách khác, tàn bạo hơn là chặn bất kỳ sự kiện chạm nào và đặt lại con trỏ về cuối.

1

Tôi khuyên bạn nên kiểm tra thuộc tính gestureRecognizers.

Bạn sẽ tìm thấy nhiều người trong số họ trong mảng và có thể muốn xóa tất cả hoặc để tìm những người kích hoạt sự kiện bạn muốn chặn và xóa/thay thế sự kiện đó.

tôi đã sử dụng nó để loại bỏ copy/paste và chức năng kính lúp từ một UITextField

+0

Xcode cho tôi biết rằng UITextField có "không có bộ sưu tập ổ cắm" cho trình nhận dạng cử chỉ. – radven

6

Đây là một câu hỏi cũ, nhưng tôi đang tìm kiếm một câu trả lời cho câu hỏi giống nhau, và tìm ra giải pháp.

Thực sự khá đơn giản để ngăn người dùng di chuyển con trỏ. Chỉ cần phân lớp UITextField và cung cấp việc thực hiện sau đây caretRectForPosition:

- (CGRect)caretRectForPosition:(UITextPosition *)position 
{ 
    return [super caretRectForPosition:self.endOfDocument]; 
} 
+0

Tôi chỉ muốn thêm rằng trong khi điều này thực sự ngăn chặn các dấu sót di chuyển, nó tuy nhiên không vô hiệu hóa kính lúp (ít nhất là không có trong iOS 7). Tiêu đề và câu hỏi đều yêu cầu những thứ khác nhau. – iMaddin

1

NO DIỆN THỊ THỰC cần.

Bạn có thể sử dụng UITextFieldDelegate. Nó sẽ làm cho kính lúp vô hiệu hóa & lựa chọn văn bản.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    textField.userInteractionEnabled = NO; 
    return YES; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    textField.userInteractionEnabled = YES; 
} 

NB: Đây chỉ là bỏ qua.

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