Swift on Xcode#5[文字輸入UITextField、輸入多行文字UITextView]

影山小麥機
Jul 13, 2021

--

前言

這個章節大部分就是練習一些創建輸入框的方法,調整的方式其實與上一篇的UIView、UILabel大同小異

正文

1.UITextField

大致上作法可以參考上述,實作完則如下:

2.UITextView

新增一個UITextView

上面和UILabel、UIView、UITextField類似

略有不同則如下:

我們可以用UIMenuItem來創建選單的選項,就如Send、Facebook….etc

也可以增加事件來藏隱藏鍵盤。

不過呢,因為Send、Facebook都不是原本ViewController就有的內建方法,所以要另外在前面編寫方法:

上面可以看到在ViewController下面,我們新增了三個方法,分別是sendMail、sendFB、hideKeyboard

不過在這裡有個小問題,為什麼func前面要加上@objc呢?

補充:@objc的意義

很奇怪的一件事是,假若我今天把sendMail前的@objc刪除了

那麼下面的mail會馬上報這個錯,那是為什麼呢?

Argument of #selector refers to instance method ‘sendMail( )’ that is not exposed to Objective-C(#selector 的參數引用未透露給 Objective-C 的實體方法“sendMail()”)

Add ‘objc’ to expose this instance method to Objective-C(新增objc去透露這個實體方法給Objective-C)

看到這裡,忍不住就去查了一下,找到了一個還可以的解釋

那為什麼樣修飾?

如果以我們遇到的例子來回推,應該可以這樣解釋:

#selector應該是以前Objective-C的實體方法,所以可以藉由Objective-C來調用至Swift中來使用,所以理應我們要標上@objc來調用#selector。

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

No responses yet

Write a response