2012-01-13 40 views
12

tôi muốn triển khai Mã theo đó tôi có thể bắt đầu chèn văn bản ở bất kỳ vị trí nào của con trỏ trong UITextView trong iphone sdklàm thế nào để chèn văn bản tại bất kỳ vị trí con trỏ trong uitextview?

bất kỳ ý tưởng nào? cảm ơn bạn trước ..

i refereed liên kết này: iPhone SDK: How to create a UITextView that inserts text where you tap?

Nhưng không Bắt nó.

+0

Vui lòng trả lời nếu có ai thử trước đây. Tôi cũng làm như vậy nhưng không thành công nên hãy giúp đỡ. –

Trả lời

10

Đây là những gì tôi sử dụng với bàn phím tùy chỉnh, dường như hoạt động tốt, có thể có cách tiếp cận rõ ràng hơn, không chắc chắn.

NSRange range = myTextView.selectedRange; 
NSString * firstHalfString = [myTextView.text substringToIndex:range.location]; 
NSString * secondHalfString = [myTextView.text substringFromIndex: range.location]; 
myTextView.scrollEnabled = NO; // turn off scrolling 

NSString * insertingString = [NSString stringWithFormat:@"your string value here"]; 

myTextView.text = [NSString stringWithFormat: @"%@%@%@", 
       firstHalfString, 
       insertingString, 
       secondHalfString]; 
range.location += [insertingString length]; 
myTextView.selectedRange = range; 
myTextView.scrollEnabled = YES; // turn scrolling back on. 
+0

thanx nó rất intersting tôi đã sử dụng nó bằng cách xóa từ nơi con trỏ được đặt trong textview bởi bàn phím tùy chỉnh của tôi :) thanx một lần nữa –

+0

Rất đẹp ... Cảm ơn, Dan. –

18

Câu trả lời của Dan là thay đổi văn bản theo cách thủ công. Nó không chơi tốt với UndoManager của UITextView.

Thật ra rất dễ dàng để chèn văn bản với API giao thức UITextInput, được hỗ trợ bởi UITextView và UITextField.

[textView replaceRange:textView.selectedTextRange withText:insertingString]; 

Lưu ý: Đó là selectedTextRange trong giao thức UITextInput, chứ không phải là selectedRange

+0

Cảm ơn bạn nó hoạt động cho tôi. –

+0

Đẹp một Huang! – Rambatino

+0

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

4

Cách đơn giản nhất (nhưng nó sẽ không thay thế văn bản đã chọn) được sử dụng insertText: phương pháp:

[textView insertText:@"some text you want to insert"]; 

UITextView phù hợp với UITextInput chính nó phù hợp với UIKeyInput.

1

Đây là câu trả lời của Glorfindel trong Swift3. Các văn bản chèn của nó ở đây nó kéo ra khỏi clipboard.

if let textRange = myTextView.selectedTextRange { 
    myTextView.replace(textRange, withText:UIPasteboard.general.string!) 
} 
Các vấn đề liên quan