2015-04-27 30 views
11

Tôi đang sử dụng lớp trường văn bản tùy chỉnh sau để thay đổi giao diện của trường văn bản. Bây giờ tôi cần thay đổi màu nền, màu văn bản và màu chủ của trường văn bản, khi người dùng bắt đầu chỉnh sửa và kết thúc chỉnh sửa trường văn bản. Làm thế nào để làm điều đó, sử dụng lớp này.Thay đổi màu nền và màu chữ của trường văn bản tùy chỉnh IOS Swift

import Foundation 
import UIKit 

class CustomTextField: UITextField{ 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     //Border 
     self.layer.cornerRadius = 15.0; 
     self.layer.borderWidth = 1.5 
     self.layer.borderColor = UIColor.whiteColor().CGColor 

     //Background 
     self.backgroundColor = UIColor(white: 1, alpha: 0.0) 

     //Text 
     self.textColor = UIColor.whiteColor() 
     self.textAlignment = NSTextAlignment.Center 
    } 

} 

Trả lời

4

Thêm tự như một mục tiêu cho các sự kiện UIControl bạn cần theo documentation

Ở đó bạn có các sự kiện điều khiển cho EditingDidBegin và như vậy.

Something như thế này:

self.addTarget(self, action: "myFunc", forControlEvents: UIControlEvents.EditingDidBegin); 
+0

Phương pháp này đang giúp tôi làm những gì tôi muốn làm. Cảm ơn bạn. –

10

Trong lớp CustomTextField của bạn, bạn có thể thêm một người quan sát tài sản:

var change: Bool = false { 
    didSet { 
     textColor = change ? .yellow : .black 
     backgroundColor = change ? .blue : .white 
    } 
} 

và trong ViewController của bạn:

func textFieldDidBeginEditing(textField: UITextField) { 
    customTextField.change = true 
} 

func textFieldDidEndEditing(textField: UITextField) { 
    customTextField.change = false 
} 

Đừng quên đặt đại biểu của trường văn bản của bạn, trong bảng phân cảnh hoặc theo chương trình.

EDIT:
rút gọn mã và cập nhật cho Swift 3

+0

Thiếu một chấm trước trắng trên nềnMàu màu. Phải là: backgroundColor = change? .blue: .white – crash

+0

@crash: đã chỉnh sửa. Cảm ơn – Eendje

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