UITextField的一些筆記

暴走蘿莉

ViewController.swift

import UIKit



//MARK: - 生命周期和屬性
class ViewController: UIViewController {
    
    //屬性:
    let player = YTPersonImageView()
    
    
    //生命周期:
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //創(chuàng)建界面
        self.creatUI()
        
        //創(chuàng)建定時器
        NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "timerAction", userInfo: nil, repeats: true)
    }
    
    //定時器
    func timerAction() {
        
        self.player.move()
    }
    
    
}

//MARK: - 搭界面
extension ViewController{
    
    func creatUI(){
        
        //1.背景圖
        let bgImageView = UIImageView.init(frame: self.view.bounds)
        let path = NSBundle.mainBundle().pathForResource("map.png", ofType: nil)
        bgImageView.image = UIImage.init(contentsOfFile: path!)
        self.view.addSubview(bgImageView)
        
        
        
        //3.小人
        self.player.frame = CGRectMake(0, 0, 64, 64)
        self.player.center = self.view.center
        self.player.image = UIImage.init(named: "player_down_1.png")
        self.player.animationDuration = 0.5
        self.view.addSubview(self.player)
        
        
        //2.方向按鈕
        //左
        let leftBtn = UIButton.init(frame: CGRectMake(72, 503, 80, 80))
        leftBtn.setImage(UIImage.init(named: "button_left"), forState: .Normal)
        leftBtn.addTarget(self, action: "touchDownAction:", forControlEvents: .TouchDown)
        leftBtn.addTarget(self, action: "touchUpAction:", forControlEvents: .TouchUpInside)
        leftBtn.tag = YTDirection.Left.rawValue
        self.view.addSubview(leftBtn)
        //右
        let rightBtn = UIButton.init(frame: CGRectMake(232, 503, 80, 80))
        rightBtn.setImage(UIImage.init(named: "button_right"), forState: .Normal)
        rightBtn.addTarget(self, action: "touchDownAction:", forControlEvents: .TouchDown)
        rightBtn.addTarget(self, action: "touchUpAction:", forControlEvents: .TouchUpInside)
        rightBtn.tag = YTDirection.Right.rawValue
        self.view.addSubview(rightBtn)
        
        //上
        let upBtn = UIButton.init(frame: CGRectMake(152, 444, 80, 80))
        upBtn.setImage(UIImage.init(named: "button_up"), forState: .Normal)
        upBtn.addTarget(self, action: "touchDownAction:", forControlEvents: .TouchDown)
        upBtn.addTarget(self, action: "touchUpAction:", forControlEvents: .TouchUpInside)
        upBtn.tag = YTDirection.Up.rawValue
        self.view.addSubview(upBtn)
        
        //下
        let downBtn = UIButton.init(frame: CGRectMake(152, 543, 80, 80))
        downBtn.setImage(UIImage.init(named: "button_down"), forState: .Normal)
        downBtn.addTarget(self, action: "touchDownAction:", forControlEvents: .TouchDown)
        downBtn.addTarget(self, action: "touchUpAction:", forControlEvents: .TouchUpInside)
        downBtn.tag = YTDirection.Down.rawValue
        self.view.addSubview(downBtn)
        
        
        
    }
    
}

//MARK: - 按鈕點(diǎn)擊
extension ViewController{
    //按鈕彈起
    func touchUpAction(btn:UIButton){
        
        //不能再移動
        self.player.isMoving = false
    }
    
    //按鈕按下
    func touchDownAction(btn:UIButton) {
        
        //1.告訴小人的移動方向
        switch btn.tag {
        case YTDirection.Up.rawValue:
            self.player.moveDirection = .Up
        case YTDirection.Down.rawValue:
            self.player.moveDirection = .Down
        case YTDirection.Right.rawValue:
            self.player.moveDirection = .Right
        case YTDirection.Left.rawValue:
            self.player.moveDirection = .Left
            
        default:
            print("不存在的方向")
        }
        
        //2.可以移動
        self.player.isMoving = true
        
        
    }
}


YTPersonImageView.swift

import UIKit


//MARK: - 方向枚舉
enum YTDirection:Int{
    
    case Left 
    case Right
    case Up
    case Down
}

//MARK: - 全局變量
let screenH = UIScreen.mainScreen().bounds.size.height
let screenW = UIScreen.mainScreen().bounds.size.width


class YTPersonImageView: UIImageView {
    
    //屬性:
    //1.移動方向
    var moveDirection: YTDirection = .Down
    //2.是否移動
    var isMoving = false{
        
        //在給isMoving賦值的時候蓄髓,會自動調(diào)用這個didSet代碼塊
        didSet{
            
            //如果是變成移動狀態(tài)
            if isMoving == true {
                
                //設(shè)置當(dāng)前方向?qū)?yīng)的動畫數(shù)組
                switch self.moveDirection {
                case .Left:
                    self.animationImages = self.leftArray
                case .Right:
                    self.animationImages = self.rightArray
                case .Up:
                    self.animationImages = self.upArray
                default:
                    self.animationImages = self.downArray
                    
                }
                
                self.startAnimating()
                
            }else{
                
                //如果是變成停止?fàn)顟B(tài)
                self.stopAnimating()
                self.image = self.animationImages![0]
                
            }
            
            
        }
    }
    
    
    
    
    
    
    //3.動畫數(shù)組
    //懶加載,就是當(dāng)前這個變量只創(chuàng)建一次舒帮,并且是在使用的時候才會創(chuàng)建会喝,不使用就不會創(chuàng)建
    //左
    lazy var leftArray:[UIImage] = {
        var array = [UIImage]()
        for item in 1...3{
            
            let image = UIImage.init(named: "player_left_\(item)")
            array.append(image!)
        }
        return array
    }()
    //右
    lazy var rightArray:[UIImage] = {
        var array = [UIImage]()
        for item in 1...3{
            
            let image = UIImage.init(named: "player_right_\(item)")
            array.append(image!)
        }
        return array
    }()
    //上
    lazy var upArray:[UIImage] = {
        var array = [UIImage]()
        for item in 1...3{
            
            let image = UIImage.init(named: "player_up_\(item)")
            array.append(image!)
        }
        return array
    }()
    //下
    lazy var downArray:[UIImage] = {
        var array = [UIImage]()
        for item in 1...3{
            
            let image = UIImage.init(named: "player_down_\(item)")
            array.append(image!)
        }
        return array
    }()
    
    
    //方法:
    //小人移動
    func move() {
        
        //判斷小人兒是否可以動
        if isMoving == false {
            return
        }
        //如果可以移動
        switch self.moveDirection {
            
        case .Down:
            
            if self.frame.origin.y + 1 >= screenH - self.frame.size.height {
                
                return
            }
            self.frame.origin.y += 1
            
            
        case .Up:
            
            if self.frame.origin.y - 1 <= 0 {
                
                return
            }
            
            self.frame.origin.y -= 1
            
        case .Left:
            
            if self.frame.origin.x - 1 <= 0 {
                return
            }
            
            self.frame.origin.x -= 1
            
        default:
            
            if self.frame.origin.x + 1 >= screenW - self.frame.size.width {
                
                return
            }
            
            self.frame.origin.x += 1
            
        }
    }
}
屏幕快照 2016-08-25 下午8.23.38.png

2.自定義鍵盤

ViewController.swift

import UIKit

class ViewController: UIViewController,YTKeyBoardDelegate {
    
    //MARK: - 屬性
    var textField = UITextField()
    
    //MARK: - 生命周期
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //1.創(chuàng)建一個UITextField對象
        textField = UITextField.init(frame: CGRectMake(100, 100, 200, 50))
        textField.backgroundColor = UIColor.init(red: 230/255.0, green: 230/255.0, blue: 230/255.0, alpha: 230/255.0)
        self.view.addSubview(textField)
        
        //使用自己的鍵盤
        let keyBoard = YTKeyBoard(frame: CGRectMake(0,0,100,256))
        keyBoard.frame = CGRectMake(0, 0, 100, 250)
        
        //設(shè)置代理
        keyBoard.delegate = self
        
        keyBoard.backgroundColor = UIColor.init(red: 105/255.0, green: 105.0/255.0, blue: 105/255.0, alpha: 105/255.0)
        textField.inputView = keyBoard
        
    }
    
    //MARK: - YTKeyBoard delegate
    func showContent(button: UIButton) {
        
        if button.currentTitle == "返回" {
            
            //收起鍵盤
            self.textField.resignFirstResponder()
            
            return
        }
        
        if button.currentTitle == "C" {
            
            //判斷textField中的文字是否為空,不為空才做刪除操作
            if self.textField.text?.characters.count > 0 {
                //拿到最后一個字符的index
                let last  = self.textField.text!.endIndex.predecessor()
                
                //移除最后一個字符
                var text = self.textField.text!
                text.removeAtIndex(last)
                
                self.textField.text = text
                
            }
            
            return
        }
        
        
        textField.text = textField.text! + button.currentTitle!
    }
    
    
}

YTKeyBoard.swift

import UIKit

//MARK: - YTKeyBoard協(xié)議
protocol YTKeyBoardDelegate{
    
    //讓代理去顯示指定的按鈕上的內(nèi)容
    func showContent(button:UIButton)
}


//1.在創(chuàng)建當(dāng)前類的對象的時候玩郊,去創(chuàng)建在這個視圖上所有的子視圖肢执,并且添加(不需要設(shè)置子視圖的frame)
//2.計(jì)算子視圖的frame

//MARK: - 構(gòu)造方法和屬性
class YTKeyBoard: UIView {
    
    //代理
    var delegate: YTKeyBoardDelegate? = nil
    
    
    //重寫父類的構(gòu)造方法
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        //在這個方法中去創(chuàng)建所有的子視圖
        self.creatSubViews()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
}

//MARK: - 創(chuàng)建子視圖
extension YTKeyBoard{
    
    //計(jì)算子視圖的frame
    //1.這個方法第一次調(diào)用是在當(dāng)前視圖將要顯示在界面上的時候才會調(diào)用(在這個方法中拿到的當(dāng)前視圖的frame是視圖最終frame值)
    //當(dāng)當(dāng)前視圖顯示出來之后,如果視圖frame發(fā)生改變译红,就會自動調(diào)用這個方法
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //間距
        let margin:CGFloat = 10
        //寬度
        let keyW = self.frame.size.width
        //高度
        let keyH = self.frame.size.height
        //列數(shù)
        let col: CGFloat = 3
        //按鍵的寬度
        let btnW = (keyW - (col+1)*margin) / col
        //行數(shù)
        let line: CGFloat = 4
        //按鍵的高度
        let btnH = (keyH - (line+1)*margin) / line
        
        
        //        Y:margin+(btnH+margin)*(i/col)
        //        X:margin+(btnW+margin)*(i%col)
        //1.拿到當(dāng)前視圖上的子視圖
        var i = 0
        for item in self.subviews {
            
            //a.計(jì)算按鍵的frame
            //找到按鍵對應(yīng)的按鈕
            if item.tag == 100 {
                
                let btnX = margin + (btnW+margin) * CGFloat(i%Int(col))
                let btnY = margin + (btnH+margin) * CGFloat(i/Int(col))
                item.frame = CGRectMake(btnX, btnY, btnW, btnH)
                
                //找到一個按鈕i加1
                i += 1
            }
            
            //b.計(jì)算imageView的frame
            if item.tag == 200 {
                
                item.frame = CGRectMake(20, -40, 50, 50)
            }
        }
        
        
        
        
        
    }
    
    
    
    //創(chuàng)建子視圖
    func creatSubViews() {
        //1.鍵盤上顯示的內(nèi)容
        let titles = ["1","2","3","4","5","6","7","8","9","C","0","返回"]
        
        //2.遍歷數(shù)組预茄,創(chuàng)建對應(yīng)的按鈕
        //i ->下標(biāo)
        //item -> 數(shù)組元素
        for (_,item) in titles.enumerate() {
            
            //創(chuàng)建對應(yīng)的按鈕
            let btn = UIButton.init()
            btn.setTitle(item, forState: .Normal)
            btn.backgroundColor = UIColor.init(red: 230/255.0, green: 230/255.0, blue: 230/255.0, alpha: 230/255.0)
            // 鍵盤上的字體顏色
            btn.setTitleColor(UIColor.blackColor(), forState: .Normal)
            btn.tag = 100
            btn.addTarget(self, action: "btnAction:", forControlEvents: .TouchDown)
            self.addSubview(btn)
        }
        
        //3.創(chuàng)建一個imageView
        let imageView = UIImageView.init()
        imageView.image = UIImage.init(named: "luffy1")
        self.addSubview(imageView)
        imageView.tag = 200
        
    }
    
    
    //按鈕點(diǎn)擊
    func btnAction(btn:UIButton){
        
        //YTKeyBoard想要將按鈕上的內(nèi)容顯示到ViewController中的textField上。但是YTKeyBoard是做不到侦厚,但是ViewController可以耻陕。
        //確定三要素:
        //委托:YTKeyBoard
        //協(xié)議:將指定按鍵上的內(nèi)容顯示在textField上
        //代理:ViewController
        
        
        //currentTitle屬性->按鈕上的文字
        print(btn.currentTitle)
        
        //讓代理去顯示按鈕上的內(nèi)容
        self.delegate?.showContent(btn)
        
    }
    
    
}

屏幕快照 2016-08-25 下午8.25.21.png

3.UITextField基礎(chǔ)知識

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //  UITextField:UIControl:UIView
        // ============UIView的屬性和方法=============
        // 1. 創(chuàng)建UITextField對象
        let textField = UITextField.init(frame: CGRectMake(100, 100, 200, 50))
        // 2. 添加到界面上
        self.view.addSubview(textField)
        // 3. 設(shè)置背景顏色
        textField.backgroundColor = UIColor.yellowColor()
        
        // 4. 再創(chuàng)建一個UITextField對象
        let textField1 = UITextField.init(frame: CGRectMake(100, 200, 200, 50))
        self.view.addSubview(textField1)
        textField1.backgroundColor = UIColor.yellowColor()
        textField1.delegate = self
        
        // ==========textField的專有屬性和方法==========
        
        // (1). 文字相關(guān)
        // 1. text屬性
        // 設(shè)置文本輸入框的內(nèi)容
        textField.text = ""
        // 拿到文本輸入框的內(nèi)容
        print(textField.text)
        
        // 2. 文字顏色
        textField.textColor = UIColor.brownColor()
        
        // 3. 設(shè)置文字字體
        textField.font = UIFont.systemFontOfSize(14)
        
        // 4. 設(shè)置占位文字(在輸入框的內(nèi)容為空的時候就會顯示出來)
        textField.placeholder = "請輸入賬號"
        
        // 5. 設(shè)置文本的對齊方式(默認(rèn):左對齊)
        textField.textAlignment = .Left
        
        // 6. 密文顯示(默認(rèn)是false)
        textField.secureTextEntry = true
        
        
        //(2) 顯示相關(guān)
        // 1. 設(shè)置文本框的樣式
        textField.borderStyle = .RoundedRect
        // 2. 設(shè)置清除按鈕模式
        // Always -> 一直顯示
        // Never -> 從不顯示(默認(rèn))
        // WhileEditing ->  當(dāng)文本框輸入處于編輯狀態(tài)的時候顯示
        // UnlessEditing ->  當(dāng)文本框輸入處于非編輯狀態(tài)的時候顯示
        // 注: 當(dāng)文本輸入框中有光標(biāo)的時候就是處于編輯狀態(tài)
        textField.clearButtonMode = .Always
        
        // 3. 左視圖
        let leftImageView = UIImageView.init(frame: CGRectMake(0, 0, 50, 50))
        leftImageView.image = UIImage.init(named: "luffy4")
        // 設(shè)置做視圖
        textField.leftView = leftImageView
        //設(shè)置做視圖的顯示模式(確定什么時候顯示,默認(rèn)是從不顯示)
        textField.leftViewMode = .Always
        
        // 4. 右視圖
        // 當(dāng)又視圖顯示的時候刨沦,清除按鈕不能顯示
        /*
        let rightLabel = UILabel.init(frame: CGRectMake(0, 0, 40, 40))
        rightLabel.text = "你好"
        textField.rightView = rightLabel
        textField.rightViewMode = .Always
        */
        
        // (3) 鍵盤相關(guān)
        // 1. 設(shè)置鍵盤上返回按鈕的樣式
        textField.returnKeyType = .Done
        
        // 2. 鍵盤樣式
        textField.keyboardType = .Default
        
        // 3.設(shè)置自定義的鍵盤
        // 自定義的鍵盤诗宣,只有高度有效。寬度是屏幕的寬度
        let myInputView = UIView.init(frame: CGRectMake(0, 0, 0, 256))
        myInputView.backgroundColor = UIColor.redColor()
//        textField.inputView = myInputView
        
        // 4. 設(shè)置子鍵盤
        let accessoryView = UIView.init(frame: CGRectMake(0, 0, 0, 50))
        accessoryView.backgroundColor = UIColor.greenColor()
        textField.inputAccessoryView = accessoryView
        
        // (4) 設(shè)置代理
        // textField -> 委托
        // self -> 代理
        textField.delegate = self
        
        
        
    }


}

extension ViewController:UITextFieldDelegate {
    
    // 6. 當(dāng)按鍵盤上的返回按鈕的時候已卷,會自動調(diào)用
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        
        print("返回按鈕被點(diǎn)擊")
        
        // 收起鍵盤
        // 1. 放棄第一響應(yīng)者
        textField.resignFirstResponder()
        // 2. 直接讓指定的textField結(jié)束編輯
        textField.endEditing(true)
        // 3. 讓self.view上的所有的子視圖都結(jié)束編輯
        self.view.endEditing(true)
        
        
        return true
        
    }
    
    // 5. 當(dāng)點(diǎn)擊textField彈出來的鍵盤上的按鍵的時候會自動調(diào)用這個方法
    // 參數(shù)1: 委托
    // 參數(shù)2: 當(dāng)前輸入的的字符所在的位置
    // 參數(shù)3: 當(dāng)前輸入的字符串(在鍵盤上按的鍵的值)
    // 返回值: 是否可以改變textField的text屬性(); false -> 按鍵盤上的按鍵無效
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        
        print(range)
        print(string)
        if string == "0" {
            print("進(jìn)入秘密頁")
        }
        
        return true
        
    }
    
    // 4. 當(dāng)文本輸入框已經(jīng)結(jié)束編輯的時候會自動調(diào)用這個方法
    func textFieldDidEndEditing(textField: UITextField) {
        
        print("已經(jīng)結(jié)束編輯")
        
    }
    
    
    // 2. 當(dāng)文本輸入框已經(jīng)開始編輯的時候會自動調(diào)用這個方法
    func textFieldDidBeginEditing(textField: UITextField) {
        
        print("已經(jīng)開始編輯")
        
    }
    
    
    // 3.當(dāng)文本輸入框?qū)⒁Y(jié)束編輯的時候會自動調(diào)用這個方法
    // 返回: 設(shè)置當(dāng)前的textField是否可以結(jié)束編輯()默認(rèn)是true
    func textFieldShouldEndEditing(textField: UITextField) -> Bool {
        
        print("將要結(jié)束編輯")
        
        // 要求文本輸入框的文字長度要大于等于8的時候才能結(jié)束編輯
        if textField.text?.characters.count >= 8 {
            return true
        }
        
        
        return false
        
    }
    
    
    
    
    
    // 1. 在textField將要開始編輯的時候會自動調(diào)用
    // 參數(shù):當(dāng)前這個協(xié)議對應(yīng)的的委托
    // 返回值:設(shè)置當(dāng)前的textField是否可以進(jìn)行編輯(默認(rèn)是true)
    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        
        print("將要開始編輯")
        return true  // false -> 讓textField不能進(jìn)行編輯
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梧田,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子侧蘸,更是在濱河造成了極大的恐慌裁眯,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讳癌,死亡現(xiàn)場離奇詭異穿稳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)晌坤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門逢艘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旦袋,“玉大人,你說我怎么就攤上這事它改“淘校” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵央拖,是天一觀的道長祭阀。 經(jīng)常有香客問我,道長鲜戒,這世上最難降的妖魔是什么专控? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮遏餐,結(jié)果婚禮上伦腐,老公的妹妹穿的比我還像新娘。我一直安慰自己失都,他們只是感情好柏蘑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗅剖,像睡著了一般辩越。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上信粮,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天黔攒,我揣著相機(jī)與錄音,去河邊找鬼强缘。 笑死督惰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旅掂。 我是一名探鬼主播赏胚,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼商虐!你這毒婦竟也來了觉阅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秘车,失蹤者是張志新(化名)和其女友劉穎典勇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叮趴,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡割笙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了眯亦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伤溉。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡般码,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乱顾,到底是詐尸還是另有隱情板祝,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布糯耍,位于F島的核電站扔字,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏温技。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一扭粱、第九天 我趴在偏房一處隱蔽的房頂上張望舵鳞。 院中可真熱鬧,春花似錦琢蛤、人聲如沸蜓堕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽套才。三九已至,卻和暖如春慕淡,著一層夾襖步出監(jiān)牢的瞬間背伴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工峰髓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留傻寂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓携兵,卻偏偏與公主長得像疾掰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子徐紧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容