2011-08-19 15 views

Trả lời

1

Điều tôi đã làm là phủ một UITextField khác lên trên con trỏ có con trỏ tôi muốn ẩn. Sau đó, trong phương thức delegate textFieldShouldBeginEditing tôi thiết lập textField khác để trở thành đáp ứng đầu tiên và trả về NO.

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (textField.tag==TAG_OF_DUMMY_TEXTFIELD) { 
     [otherField becomeFirstResponder]; 
     return NO; 
    } 
    return YES; 
} 

Và sau đó trong phương pháp này ngày cuộc gọi chọn:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@YOUR_DATE_FORMAT]; 
dummyField.text = [dateFormatter stringFromDate:datePicker.date]; 

Trong Interface Builder otherField (một với quan điểm đầu vào datepicker) là đằng sau dummyField (một trong đó ẩn con trỏ).

6

Tôi không thể nhận được giải pháp của jcm để hoạt động. Những gì tôi đã kết thúc làm là để phân lớp UILabel để bắt chước một chức năng tương tác của UITextField mà không có các phần mà tôi không muốn (giống như con trỏ). Tôi đã viết một bài đăng blog về nó ở đây:

http://pietrorea.com/2012/07/how-to-hide-the-cursor-in-a-uitextfield/

Về cơ bản, lớp con UILabel cần phải ghi đè lên isUserInteractionEnabled, inputView, inputViewAccessory và canBecomeFirstResponder. Nó chỉ là một vài dòng mã và nó có ý nghĩa hơn.

+0

Giải pháp tuyệt vời! – adnako

+0

Tôi vừa mới thêm lớp PRLabel vào dự án của mình .. nhưng tôi không biết tôi đã làm gì sai, đó là việc làm lộn xộn nghiêm trọng với chỉ mục tableview ... tôi nghĩ khi xem bộ chọn được hiển thị, tableview được cuộn nhưng không được cập nhật ... Tôi có một PRLabel trong phần 1 .. tôi chạm vào nó, chọn hiển thị xem sau đó khi tôi chạm vào một ô trong phần 0 nó được hiểu là phần 1 .. – raw3d

0

Tôi thấy giải pháp này là cách dễ nhất để triển khai.

Hãy chắc chắn rằng bạn xác định UITextFieldDelegate trong file .h của bạn:

.... UIViewController <UITextFieldDelegate> 

Trong file .m của bạn, thêm video này vào phương pháp bạn gọi fo bộ chọn ngày:

[yourTextField resignFirstResponder]; 

này sẽ ngăn chặn trường văn bản nhấp nháy.

39

Subclass UITextField và Override phương pháp - (CGRect)caretRectForPosition:(UITextPosition *)position và trở CGRectZero.

- (CGRect)caretRectForPosition:(UITextPosition *)position { 
    return CGRectZero; 
} 
+2

Điều này thực sự đã làm công việc tuyệt vời .. –

+0

Nó không hoạt động với iOS 4.3. Giao thức UITextInput chỉ thích ứng với iOS 5 trở lên. –

+4

Đây phải là câu trả lời đã chọn. Đó là điểm và địa chỉ phần cụ thể chúng tôi muốn ẩn - cụ thể là dấu mũ. Đây là giải pháp tốt nhất trong số tất cả chúng. Cảm ơn. –

31

Tôi hy vọng nó sẽ hữu ích cho bạn.

Đặt con trỏ UIColor -> Rỗng.

[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"]; 

Trong Swift: 2,3

self.textField.valueForKey("textInputTraits")?.setValue(UIColor.clearColor() , forKey:"insertionPointColor") 
+0

Cảm ơn, nó hoạt động ...: -) – byJeevan

+0

Cảm ơn rất nhiều. Nó hoạt động! –

+0

có ai biết phiên bản nhanh không? –

0

cách tiếp cận Balaji của làm việc.

Tôi cũng đã sử dụng các giải pháp KVC như vậy nhiều lần. Mặc dù nó có vẻ không có giấy tờ nhưng nó hoạt động. Thành thật mà nói, bạn không sử dụng bất kỳ phương thức riêng nào ở đây - chỉ Mã hóa khóa-giá trị hợp pháp.

Khác biệt đáng kể so với [addNewCategoryTextField textInputTraits].

P.S.Hôm qua, ứng dụng mới của tôi đã xuất hiện tại AppStore mà không gặp bất kỳ sự cố nào với phương pháp này. Và nó không phải là trường hợp đầu tiên khi tôi sử dụng KVC trong việc thay đổi một số thuộc tính chỉ đọc (như navigatonBar) hoặc ivars riêng.

40

Tôi nhận ra đây là một câu hỏi cũ, nhưng với các bản cập nhật lên iOS 7, bây giờ có thể để che giấu con trỏ bằng cách làm như sau:

[[self textFieldName] setTintColor:[UIColor clearColor]];

Nó sẽ chỉ làm việc trên iOS 7 trở lên Tuy nhiên.

+1

Đánh giá cao bản cập nhật! –

+2

Beats swizzling, thansk –

-1

Bạn có thể thêm thuộc tính BOOL cursorless vào UITextField trong danh mục thông qua các đối tượng liên quan.

@interface UITextField (Cursorless) 

@property (nonatomic, assign) BOOL cursorless; 

@end 

Sau đó, sử dụng phương pháp swizzling đến sự gian lận caretRectForPosition: với một phương pháp mà Toggles giữa CGRectZero và giá trị mặc định của nó sử dụng cursorless.

Điều này dẫn đến giao diện đơn giản qua danh mục thả xuống. Điều này được thể hiện trong các tập tin sau.

Đơn giản chỉ cần thả chúng vào trong và nhận được lợi ích của giao diện đơn giản này

UITextField loại: https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.h https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.m

Phương pháp Swizzling: https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.h https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.m

2

Hoàn toàn ngớ ngẩn hack, nhưng nếu bạn thiết lập màu sắc của trường văn bản trong phần UIView của Trình tạo giao diện phù hợp y thanh tra để phù hợp với màu nền, con trỏ sẽ xuất hiện vô hình:

1

Không phải là giải pháp tốt nhất, nhưng bạn cũng có thể thiết lập Opacity của màu sắc thái là 0%.

enter image description here