TextKit框架詳細(xì)解析 (十) —— 文本編程指南之復(fù)制晰搀、剪切和粘貼操作(六)

版本記錄

版本號(hào) 時(shí)間
V1.0 2018.09.01

前言

TextKit框架是對(duì)Core Text的封裝,用簡(jiǎn)潔的調(diào)用方式實(shí)現(xiàn)了大部分Core Text的功能办斑。 TextKit是一個(gè)偏上層的開(kāi)發(fā)框架外恕,在iOS7以上可用,使用它可以方便靈活處理復(fù)雜的文本布局乡翅,滿足開(kāi)發(fā)中對(duì)文本布局的各種復(fù)雜需求鳞疲。TextKit實(shí)際上是基于CoreText的一個(gè)上層框架,其是面向?qū)ο蟮穆屠省=酉聛?lái)幾篇我們就一起看一下這個(gè)框架建丧。感興趣的看下面幾篇文章排龄。
1. TextKit框架詳細(xì)解析 (一) —— 基本概覽和應(yīng)用場(chǎng)景(一)
2. TextKit框架詳細(xì)解析 (二) —— 基本概覽和應(yīng)用場(chǎng)景(二)
3. TextKit框架詳細(xì)解析 (三) —— 一個(gè)簡(jiǎn)單布局示例(一)
4. TextKit框架詳細(xì)解析 (四) —— 一個(gè)簡(jiǎn)單布局示例(二)
5. TextKit框架詳細(xì)解析 (五) —— 文本編程指南之簡(jiǎn)介(一)
6. TextKit框架詳細(xì)解析 (六) —— 文本編程指南之展示文本內(nèi)容(二)
7. TextKit框架詳細(xì)解析 (七) —— 文本編程指南之排版概念(三)
8. TextKit框架詳細(xì)解析 (八) —— 文本編程指南之管理Text Fields and Text Views(四)
9. TextKit框架詳細(xì)解析 (九) —— 文本編程指南之管理鍵盤(pán)(五)

Copy, Cut, and Paste Operations - 復(fù)制波势、剪切和粘貼操作

用戶可以在一個(gè)應(yīng)用程序中復(fù)制文本,圖像或其他數(shù)據(jù)橄维,并將該數(shù)據(jù)粘貼到同一應(yīng)用程序或不同應(yīng)用程序中的其他位置尺铣。 例如,您可以在電子郵件中復(fù)制個(gè)人的地址争舞,并將其粘貼到Contacts應(yīng)用中的相應(yīng)field中凛忿。 UIKit框架在UITextViewUITextField類(lèi)中實(shí)現(xiàn)了copy-cut-paste。 如果您希望在自己的應(yīng)用程序中使用此行為竞川,則可以使用這些類(lèi)的對(duì)象店溢,也可以自行實(shí)現(xiàn)copy-cut-paste

以下部分描述了UIKit的編程接口委乌,用于復(fù)制床牧,剪切和粘貼操作,并說(shuō)明如何使用它們遭贸。

注意:有關(guān)復(fù)制和粘貼操作的使用指南戈咳,請(qǐng)參閱iOS Human Interface Guidelines中的Supporting Copy and Paste


Copy-Paste Operations in UIKit - UIKit中的復(fù)制粘貼操作

UIKit框架的幾個(gè)類(lèi)和非正式協(xié)議為您提供了在應(yīng)用程序中實(shí)現(xiàn)復(fù)制壕吹,剪切和粘貼操作所需的方法和機(jī)制:

  • UIPasteboard類(lèi)提供粘貼板:用于在應(yīng)用程序內(nèi)或應(yīng)用程序之間共享數(shù)據(jù)的保護(hù)區(qū)域著蛙。該類(lèi)提供了在粘貼板上寫(xiě)入和讀取數(shù)據(jù)項(xiàng)的方法。
  • UIMenuController類(lèi)在選擇的上方或下方顯示要復(fù)制耳贬,剪切或粘貼的編輯菜單踏堡。編輯菜單的默認(rèn)命令是(可能)復(fù)制,剪切咒劲,粘貼顷蟆,選擇和全選胖秒。您還可以將自定義菜單項(xiàng)添加到編輯菜單(請(qǐng)參閱 Adding Custom Items to the Edit Menu)。
  • UIResponder類(lèi)聲明方法canPerformAction:withSender:慕的。響應(yīng)者類(lèi)可以實(shí)現(xiàn)此方法阎肝,以根據(jù)當(dāng)前上下文顯示和刪除編輯菜單的命令。
  • UIResponderStandardEditActions非正式協(xié)議聲明了用于處理復(fù)制肮街,剪切风题,粘貼,選擇和全選命令的接口嫉父。當(dāng)用戶點(diǎn)擊編輯菜單中的一個(gè)命令時(shí)沛硅,將調(diào)用相應(yīng)的UIResponderStandardEditActions方法。

Pasteboard Concepts - 粘貼板概念

粘貼板是用于在應(yīng)用程序內(nèi)或應(yīng)用程序之間交換數(shù)據(jù)的標(biāo)準(zhǔn)化機(jī)制绕辖。粘貼板最常用的用途是處理復(fù)制摇肌,剪切和粘貼操作:

  • 當(dāng)用戶在應(yīng)用程序中選擇數(shù)據(jù)并選擇“復(fù)制(或剪切)”菜單命令時(shí),所選數(shù)據(jù)將被放置到粘貼板上仪际。
  • 當(dāng)用戶選擇“粘貼”菜單命令(在相同或不同的應(yīng)用程序中)時(shí)围小,粘貼板上的數(shù)據(jù)將從粘貼板復(fù)制到當(dāng)前應(yīng)用程序。

在iOS中树碱,粘貼板也用于支持查找操作肯适。此外,您可以使用粘貼板使用自定義URL方案而不是復(fù)制成榜,剪切和粘貼命令在應(yīng)用之間傳輸數(shù)據(jù)框舔;有關(guān)此技術(shù)的信息,請(qǐng)參閱Updating Your Info.plist赎婚。

無(wú)論操作如何刘绣,使用粘貼板對(duì)象執(zhí)行的基本任務(wù)都是將數(shù)據(jù)寫(xiě)入粘貼板并從粘貼板讀取數(shù)據(jù)。雖然這些任務(wù)在概念上很簡(jiǎn)單挣输,但它們掩蓋了許多重要的細(xì)節(jié)纬凤。主要的復(fù)雜性是可能有多種方式來(lái)表示數(shù)據(jù),這種復(fù)雜性導(dǎo)致了對(duì)效率的考慮歧焦。以下各節(jié)將討論這些問(wèn)題和其他問(wèn)題移斩。

1. Named Pasteboards

粘貼板可以是公共的或私人的。公共粘貼板稱為系統(tǒng)粘貼板绢馍;私人粘貼板由應(yīng)用程序創(chuàng)建向瓷,因此稱為app粘貼板。粘貼板必須具有唯一的名稱舰涌。 UIPasteboard定義了兩個(gè)系統(tǒng)粘貼板猖任,每個(gè)粘貼板都有自己的名稱和用途:

  • UIPasteboardNameGeneral用于涉及各種數(shù)據(jù)類(lèi)型的剪切,復(fù)制和粘貼操作瓷耙。您可以通過(guò)調(diào)用generalPasteboard類(lèi)方法獲取表示常規(guī)粘貼板的單例對(duì)象朱躺。
  • UIPasteboardNameFind用于搜索操作刁赖。用戶在搜索欄(UISearchBar)中當(dāng)前鍵入的字符串將寫(xiě)入此粘貼板,因此可以在應(yīng)用程序之間共享长搀。您可以通過(guò)調(diào)用pasteboardWithName:create:類(lèi)方法獲取表示查找粘貼板的對(duì)象宇弛,并為該名稱傳入UIPasteboardNameFind

通常您使用系統(tǒng)定義的粘貼板之一源请,但如果需要枪芒,您可以使用pasteboardWithName:create:創(chuàng)建自己的應(yīng)用粘貼板。如果您調(diào)用pasteboardWithUniqueName谁尸,UIPasteboard會(huì)為您提供一個(gè)具有唯一名稱的應(yīng)用粘貼板舅踪。您可以通過(guò)其name屬性發(fā)現(xiàn)粘貼板的名稱。

2. Pasteboard Persistence - 粘貼板持久性

粘貼板可以是持久的良蛮。 當(dāng)粘貼板持久存在時(shí)抽碌,它將繼續(xù)存在于應(yīng)用程序終止之后并且跨系統(tǒng)重新啟動(dòng)。 系統(tǒng)粘貼板是持久的决瞳。 雖然默認(rèn)情況下應(yīng)用程序粘貼板不是持久性的货徙,但應(yīng)用程序可以通過(guò)將persistent屬性設(shè)置為YES將它們標(biāo)記為持久性。 不持久的應(yīng)用程序粘貼板只會(huì)持續(xù)到擁有(創(chuàng)建)應(yīng)用程序退出瞒斩。 在卸載創(chuàng)建它的應(yīng)用程序時(shí)破婆,將刪除持久性應(yīng)用程序粘貼板涮总。

3. Pasteboard Owner and Items - 粘貼板所有者和項(xiàng)目

最后將數(shù)據(jù)放到粘貼板上的對(duì)象稱為粘貼板所有者胸囱。 放置在粘貼板上的每條數(shù)據(jù)都被視為粘貼板項(xiàng)目。 粘貼板可以容納單個(gè)或多個(gè)項(xiàng)目瀑梗。 應(yīng)用可以根據(jù)需要放置或檢索任意數(shù)量的項(xiàng)目烹笔。 例如,假設(shè)視圖中的用戶選擇包含文本和圖像抛丽。 通過(guò)粘貼板谤职,您可以將文本和圖像作為單獨(dú)的項(xiàng)目復(fù)制到粘貼板。 從粘貼板讀取多個(gè)項(xiàng)目的應(yīng)用程序可以選擇僅采用它支持的項(xiàng)目(例如文本亿鲜,但不包括圖像)允蜈。

重要提示:當(dāng)應(yīng)用程序?qū)?shù)據(jù)寫(xiě)入粘貼板時(shí),即使它只是一個(gè)項(xiàng)目蒿柳,該數(shù)據(jù)也會(huì)替換粘貼板的當(dāng)前內(nèi)容饶套。 雖然您可以使用UIPasteboardaddItems:方法來(lái)追加項(xiàng)目,但是類(lèi)的write方法不會(huì)將項(xiàng)目附加到粘貼板的當(dāng)前內(nèi)容垒探。

4. Representations and UTIs

粘貼板操作通常在兩個(gè)不同的應(yīng)用程序之間執(zhí)行妓蛮。兩個(gè)應(yīng)用程序都不需要知道另一個(gè)應(yīng)用程序,包括它可以處理的數(shù)據(jù)類(lèi)型圾叼。為了最大化共享的可能性蛤克,粘貼板可以保存同一粘貼板項(xiàng)目的多個(gè)表示捺癞。例如,富文本編輯器可能提供復(fù)制數(shù)據(jù)的HTML构挤,PDF和純文本表示髓介。粘貼板上的項(xiàng)目包括應(yīng)用程序可以提供的該數(shù)據(jù)項(xiàng)的所有表示。

粘貼板項(xiàng)的每個(gè)表示通常由唯一類(lèi)型標(biāo)識(shí)符(Unique Type Identifier - UTI)標(biāo)識(shí)筋现。 (UTI只是一個(gè)唯一標(biāo)識(shí)特定數(shù)據(jù)類(lèi)型的字符串版保。)UTI提供了一種識(shí)別數(shù)據(jù)類(lèi)型的通用方法。如果您希望支持自定義數(shù)據(jù)類(lèi)型夫否,則必須為其創(chuàng)建唯一標(biāo)識(shí)符彻犁。為此,您可以對(duì)表示類(lèi)型字符串使用反向DNS表示法以確保唯一性凰慈;例如汞幢,自定義表示類(lèi)型可以是com.myCompany.myApp.myType。有關(guān)UTI的更多信息微谓,請(qǐng)參閱Uniform Type Identifiers Overview森篷。

例如,假設(shè)某個(gè)應(yīng)用程序支持選擇富文本和圖像豺型。它可能希望在粘貼板上放置文本選擇的富文本和Unicode版本以及圖像選擇的不同表示仲智。每個(gè)項(xiàng)目的每個(gè)表示都存儲(chǔ)有自己的數(shù)據(jù),如圖5-所示

Figure 5-1 Pasteboard items and representations

通常姻氨,為了最大化共享的可能性钓辆,粘貼板項(xiàng)目應(yīng)包括盡可能多的不同表示。

粘貼板閱讀器必須找到最適合其功能的數(shù)據(jù)類(lèi)型(如果有)肴焊。 通常前联,這意味著選擇最豐富的類(lèi)型。 例如娶眷,文本編輯器可能提供HTML(富文本)和復(fù)制文本數(shù)據(jù)的純文本表示似嗤。 支持富文本的應(yīng)用程序應(yīng)檢索HTML表示,并且僅支持純文本的應(yīng)用程序應(yīng)檢索純文本版本届宠。

5. Change Count - 更改數(shù)量

更改計(jì)數(shù)是每個(gè)粘貼板變量烁落,每次粘貼板的內(nèi)容發(fā)生更改時(shí)都會(huì)增加 - 特別是在添加,修改或刪除項(xiàng)目時(shí)豌注。 通過(guò)檢查更改計(jì)數(shù)(通過(guò)changeCount屬性)伤塌,應(yīng)用程序可以確定粘貼板中的當(dāng)前數(shù)據(jù)是否與上次接收的數(shù)據(jù)相同。 每次更改計(jì)數(shù)遞增時(shí)幌羞,粘貼板都會(huì)向感興趣的觀察者發(fā)送通知寸谜。


First Steps: Identify the Selection and Display the Edit Menu - 第一步:確定選擇并顯示編輯菜單

如果要復(fù)制,剪切或粘貼某些內(nèi)容,首先必須選擇它熊痴。 (粘貼操作通常在空的選擇上操作他爸,例如插入符號(hào)棍厌,指示項(xiàng)目集合中的位置瓜饥。)選擇項(xiàng)目后 - 并在視覺(jué)上指示選擇 - 您應(yīng)該顯示編輯菜單。 編輯菜單是一個(gè)系統(tǒng)菜單产舞,可能包含以下命令:復(fù)制巾陕,剪切讨跟,粘貼,選擇和全選鄙煤。 編輯菜單指向選擇晾匠。 當(dāng)用戶點(diǎn)擊菜單項(xiàng)時(shí),將調(diào)用相應(yīng)的UIResponderStandardEditActions方法實(shí)現(xiàn)(例如cut:paste :)梯刚。

有關(guān)選擇的更多信息以及如何顯示和管理編輯菜單凉馆,請(qǐng)參閱Managing the Selection and the Edit Menu


Copying and Cutting the Selection - 復(fù)制和剪切選擇

當(dāng)用戶點(diǎn)擊編輯菜單的“復(fù)制”或“剪切”命令時(shí)亡资,系統(tǒng)會(huì)調(diào)用實(shí)現(xiàn)它的響應(yīng)器對(duì)象的copy:cut:方法澜共。通常第一個(gè)響應(yīng)者 - 您的自定義視圖 - 實(shí)現(xiàn)這些方法,但如果第一個(gè)響應(yīng)者沒(méi)有實(shí)現(xiàn)它們锥腻,則消息以通常的方式沿響應(yīng)者鏈向上傳播嗦董。請(qǐng)注意,UIResponderStandardEditActions非正式協(xié)議聲明了這些方法瘦黑。

注意:由于UIResponderStandardEditActions是一種非正式協(xié)議京革,因此應(yīng)用程序中的任何類(lèi)都可以實(shí)現(xiàn)其方法。但是為了利用遍歷響應(yīng)者鏈的默認(rèn)行為供璧,實(shí)現(xiàn)這些方法的類(lèi)應(yīng)該從UIResponder繼承存崖,并且應(yīng)該安裝在響應(yīng)者鏈中。

在響應(yīng)copy:cut:消息時(shí)睡毒,您可以使用盡可能多的不同表示將選擇所代表的對(duì)象或數(shù)據(jù)寫(xiě)入粘貼板。此操作涉及以下步驟(假設(shè)單個(gè)粘貼板項(xiàng)目):

  • 1)從選擇中冗栗,識(shí)別或獲得對(duì)象或?qū)?yīng)于對(duì)象的二進(jìn)制數(shù)據(jù)演顾。二進(jìn)制數(shù)據(jù)必須封裝在NSData對(duì)象中。如果要將另一種類(lèi)型的對(duì)象寫(xiě)入粘貼板隅居,它必須是屬性列表對(duì)象 - 即以下類(lèi)之一的對(duì)象:NSString钠至,NSArray,NSDictionary胎源,NSDate棉钧,NSNumber或NSURL。 (有關(guān)屬性列表對(duì)象的更多信息涕蚤,請(qǐng)參閱Property List Programming Guide宪卿。)

  • 2)如果可能的诵,生成對(duì)象或數(shù)據(jù)的一個(gè)或多個(gè)其他表示。例如佑钾,如果在上一步中創(chuàng)建了表示所選圖像的UIImage對(duì)象西疤,則可以使用UIImageJPEGRepresentationUIImagePNGRepresentation函數(shù)將圖像轉(zhuǎn)換為不同的表示形式。

  • 3)獲取粘貼板對(duì)象休溶。在許多情況下代赁,這是一般的粘貼板,您可以通過(guò)generalPasteboard類(lèi)方法獲得兽掰。

  • 4)為寫(xiě)入粘貼板項(xiàng)目的每個(gè)數(shù)據(jù)表示分配一個(gè)合適的UTI芭碍。有關(guān)此主題的討論,請(qǐng)參閱Pasteboard Concepts孽尽。

  • 5)將數(shù)據(jù)寫(xiě)入每個(gè)表示類(lèi)型的第一個(gè)粘貼板項(xiàng):

    • 要編寫(xiě)數(shù)據(jù)對(duì)象豁跑,請(qǐng)將setData:forPasteboardType:消息發(fā)送到粘貼板對(duì)象。
    • 要編寫(xiě)屬性列表對(duì)象泻云,請(qǐng)將setValue:forPasteboardType:消息發(fā)送到pasteboard對(duì)象艇拍。
  • 6)如果命令為Cut(cut:method),則從應(yīng)用程序的數(shù)據(jù)模型中刪除選擇所代表的對(duì)象并更新視圖宠纯。

Listing 5-1顯示了copy:cut:方法的實(shí)現(xiàn)卸夕。 cut:方法調(diào)用copy:方法,然后從視圖和數(shù)據(jù)模型中刪除所選對(duì)象婆瓜。請(qǐng)注意快集,copy:方法存檔自定義對(duì)象以獲取可以傳遞給setData:forPasteboardType:中的粘貼板的NSData對(duì)象。

// Listing 5-1  Copying and cutting operations

- (void)copy:(id)sender {
    UIPasteboard *gpBoard = [UIPasteboard generalPasteboard];
    ColorTile *theTile = [self colorTileForOrigin:currentSelection];
    if (theTile) {
        NSData *tileData = [NSKeyedArchiver archivedDataWithRootObject:theTile];
        if (tileData)
            [gpBoard setData:tileData forPasteboardType:ColorTileUTI];
    }
}
 
- (void)cut:(id)sender {
    [self copy:sender];
    ColorTile *theTile = [self colorTileForOrigin:currentSelection];
 
    if (theTile) {
        CGPoint tilePoint = theTile.tileOrigin;
        [tiles removeObject:theTile];
        CGRect tileRect = [self rectFromOrigin:tilePoint inset:TILE_INSET];
        [self setNeedsDisplayInRect:tileRect];
     }
}

Pasting the Selection - 粘貼選擇

當(dāng)用戶點(diǎn)擊編輯菜單的粘貼命令時(shí)廉白,系統(tǒng)會(huì)調(diào)用實(shí)現(xiàn)它的響應(yīng)器對(duì)象的paste:方法个初。通常第一個(gè)響應(yīng)者 - 您的自定義視圖 - 實(shí)現(xiàn)此方法,但如果第一個(gè)響應(yīng)者沒(méi)有實(shí)現(xiàn)它猴蹂,則消息以通常的方式傳遞給響應(yīng)者院溺。 paste:方法由UIResponderStandardEditActions非正式協(xié)議聲明。

在響應(yīng)paste:消息時(shí)磅轻,您可以使用應(yīng)用支持的表示形式從粘貼板中讀取對(duì)象珍逸。然后將粘貼的對(duì)象添加到應(yīng)用程序的數(shù)據(jù)模型,并在用戶指示的位置的視圖中顯示新對(duì)象聋溜。此操作涉及以下步驟(假設(shè)單個(gè)粘貼板項(xiàng)目):

  • 1)獲取粘貼板對(duì)象谆膳。在許多情況下,這是一般的粘貼板撮躁,您可以通過(guò)generalPasteboard類(lèi)方法獲得漱病。

  • 2)通過(guò)調(diào)用containsPasteboardTypes:方法或pasteboardTypes方法,然后檢查返回的類(lèi)型數(shù)組,驗(yàn)證第一個(gè)粘貼板項(xiàng)目是否包含應(yīng)用程序可以處理的表示形式的數(shù)據(jù)杨帽。請(qǐng)注意漓穿,您應(yīng)該已經(jīng)在canPerformAction:withSender:的實(shí)現(xiàn)中執(zhí)行了此步驟。

  • 3)如果粘貼板的第一項(xiàng)包含應(yīng)用程序可以處理的數(shù)據(jù)睦尽,請(qǐng)調(diào)用以下方法之一來(lái)讀取它:

  • 4)將對(duì)象添加到應(yīng)用程序的數(shù)據(jù)模型中当凡。

  • 5)在用戶指定的用戶界面中顯示對(duì)象的表示形式山害。

Listing 5-2paste:方法的一個(gè)實(shí)現(xiàn)示例。它與組合就剪切和復(fù)制方法相反沿量。自定義視圖首先查看常規(guī)粘貼板是否保存其自定義數(shù)據(jù)表示形式浪慌;如果是這樣,它會(huì)從粘貼板讀取數(shù)據(jù)朴则,將其添加到應(yīng)用程序的數(shù)據(jù)模型中权纤,并標(biāo)記自身的一部分 - 當(dāng)前選擇 - 用于重繪。

// Listing 5-2  Pasting data to a selection

- (void)paste:(id)sender {
    UIPasteboard *gpBoard = [UIPasteboard generalPasteboard];
    NSArray *pbType = [NSArray arrayWithObject:ColorTileUTI];
    ColorTile *theTile = [self colorTileForOrigin:currentSelection];
    if (theTile == nil && [gpBoard containsPasteboardTypes:pbType]) {
        NSData *tileData = [gpBoard dataForPasteboardType:ColorTileUTI];
        ColorTile *theTile = (ColorTile *)[NSKeyedUnarchiver unarchiveObjectWithData:tileData];
        if (theTile) {
            theTile.tileOrigin = self.currentSelection;
            [tiles addObject:theTile];
            CGRect tileRect = [self rectFromOrigin:currentSelection inset:TILE_INSET];
            [self setNeedsDisplayInRect:tileRect];
        }
    }
}

Ending an Operation - 結(jié)束操作

當(dāng)您執(zhí)行cut:乌妒,copy:paste:命令返回時(shí)汹想,編輯菜單會(huì)自動(dòng)隱藏。 如果需要撤蚊,您可以以編程方式使其可見(jiàn)古掏。 有關(guān)更多信息,請(qǐng)參閱Dismissing the Edit Menu侦啸。

后記

本篇主要講述了復(fù)制槽唾、剪切和粘貼操作,感興趣的給個(gè)贊或者關(guān)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末光涂,一起剝皮案震驚了整個(gè)濱河市庞萍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忘闻,老刑警劉巖钝计,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異服赎,居然都是意外死亡葵蒂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)重虑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人秦士,你說(shuō)我怎么就攤上這事缺厉。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵提针,是天一觀的道長(zhǎng)命爬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)辐脖,這世上最難降的妖魔是什么饲宛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嗜价,結(jié)果婚禮上艇抠,老公的妹妹穿的比我還像新娘。我一直安慰自己久锥,他們只是感情好家淤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瑟由,像睡著了一般絮重。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歹苦,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天青伤,我揣著相機(jī)與錄音,去河邊找鬼殴瘦。 笑死狠角,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痴施。 我是一名探鬼主播擎厢,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辣吃!你這毒婦竟也來(lái)了动遭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤神得,失蹤者是張志新(化名)和其女友劉穎厘惦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哩簿,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宵蕉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了节榜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡玛。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宗苍,靈堂內(nèi)的尸體忽然破棺而出稼稿,到底是詐尸還是另有隱情薄榛,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布让歼,位于F島的核電站敞恋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谋右。R本人自食惡果不足惜硬猫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望改执。 院中可真熱鬧啸蜜,春花似錦、人聲如沸天梧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呢岗。三九已至冕香,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間后豫,已是汗流浹背悉尾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挫酿,地道東北人构眯。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像早龟,于是被迫代替她去往敵國(guó)和親惫霸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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