2013-08-24 33 views
6

Tôi đã một UITextView bọc bên trong một UIView có thể được thay đổi kích cỡ (tăng khung và kích thước phông chữ), và biểu tượng kính lúp hoạt động tốt với TextView nhỏ hơn kích thướcUITextView với cỡ chữ lớn và kính lúp

Magnifying glass working normal

nhưng nếu tôi tăng kích thước TextView rất nhiều, kính lúp bắt đầu đi ra khỏi khung của nó

enter image description here

tôi có thể chỉ cần loại bỏ biểu tượng kính lúp mà không ảnh hưởng curso r lựa chọn, hoặc giảm giá trị quy mô bên trong kính để nội dung phù hợp với khung của nó?

+0

http://stackoverflow.com/questions/10640781/disable-magnifying-glass-in -uitextview – iPatel

+0

Tôi không muốn xóa UILongPressGestureRecognizer, tôi muốn có thể di chuyển con trỏ bên trong textView, chỉ cần không có kính lúp, hoặc giảm kích thước quy mô kính lúp để văn bản vừa vặn trong khung kính lúp – Efesus

Trả lời

1

Ok, được quản lý để tắt kính lúp mà không xóa khả năng di chuyển con trỏ.

Để làm điều đó, tôi đã xóa UILongPressGestureRecognizer để loại bỏ kính lúp. Sau đó, sử dụng UIPanGestureRecognizer của tôi để theo dõi vị trí liên lạc của người dùng

CGPoint currentPos = [panRecognizer locationInView:self]; 

và sau đó thiết lập các vị trí con trỏ

UITextPosition *cursorPosition=[self closestPositionToPoint:CGPointMake(currentPos.x, currentPos.y)]; 
[self setSelectedTextRange:[self textRangeFromPosition:cursorPosition toPosition:cursorPosition]]; 
0

Để tắt kính lúp, chỉ cần đặt thuộc tính userInteractionEnabled thành NO. Sau đó bạn phải gọi thủ công becomeFirstResponder khi UITextField được khai thác. Bạn có thể sử dụng TapGestureRecognizer để thực hiện điều đó.

+0

Tôi không muốn để vô hiệu hóa tương tác người dùng hoàn toàn, tôi chỉ muốn vô hiệu hóa kính lúp. Ngoài ra tôi có một hitTest ghi đè thuộc tính userInteractionEnabled – Efesus