2010-10-28 29 views
6

Tôi có UITableViewCell tùy chỉnh với một thuộc tính hình ảnh và UITextView. Chế độ xem văn bản kéo dài đến cạnh của ô. Vấn đề của tôi là khai thác textview không đăng ký trong didSelectRowAtIndexPath.iOS: Chọn thông qua UITextView trên UITableViewCell tùy chỉnh

Tôi làm cách nào để có thể "nhấp qua" chế độ xem văn bản của mình?

Trả lời

6

Nếu bạn không cần nó có thể chỉnh sửa, chỉ cần đặt thuộc tính enabled của chế độ xem văn bản thành NO.

+4

userInteractionEnabled = NO work. Cám ơn rất nhiều. –

+0

TextView không có thuộc tính được bật. –

3

Bạn có thể gán đại biểu cho UITextView của mình và trong phương thức textViewShouldBeginEditing: của nó, bạn có thể gọi phương thức didSelectRowAtIndexPath theo cách thủ công. Nếu bạn không thể dễ dàng có được indexPath của hàng để chọn, bạn có thể sử dụng một lớp con của UITextView có thuộc tính indexPath và trong phương thức cellForRowAtIndexPath: khi bạn tạo UITextView, hãy đặt thuộc tính indexPath.

+0

Bạn cũng có thể gọi selectRowAtIndexPath: hoạt hình: scrollPosition ở đây để có được hình động nổi bật trên ô bảng nếu bạn muốn hành vi đó. – Rudism

5

Đối với UITextView đặt textView.userInteractionEnabled = false và nếu bạn có UITextField, hãy đặt textField.userInteractionEnabled = false.

Nếu bạn muốn TextView hoặc TextField được chỉnh sửa sau khi các tế bào với nó được khai thác, làm một cái gì đó như thế này:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    let cell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell 

    // find first textField inside this cell and select it 
    for case let textField as UITextField in cell.subviews { 
    textField.userInteractionEnabled = true 
    textField.becomeFirstResponder() 
    return 
    } 

    // find first textView inside this cell and select it 
    for case let textView as UITextView in cell.subviews { 
    textView.userInteractionEnabled = true 
    textView.becomeFirstResponder() 
    return 
    } 
} 

Sau đó, hãy chắc chắn để vô hiệu hóa tương tác người dùng sau khi bạn hoàn tất chỉnh sửa:

func textFieldDidEndEditing(textField: UITextField) { 
    textField.userInteractionEnabled = false 
    // rest of the function 
    } 

    func textViewDidEndEditing(textView: UITextView) { 
    textView.userInteractionEnabled = false 
    // rest of the function 
    } 

Đừng quên để thiết lập UITextFieldDelegate và/hoặc UITextViewDelegate

tôi hy vọng điều này giúp một ai đó :)

+1

Tôi đã thiết lập thuộc tính 'editable' của' UITextView' thành 'NO', nó không hoạt động. Đặt 'userInteractionEnabled' thành' NO' đã hoạt động. –

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