Skip to content

Commit 8db33fd

Browse files
committed
Merge branch 'feature/delegate-methods' into develop
Close #10
2 parents 38fb097 + 7cf7f1a commit 8db33fd

File tree

6 files changed

+62
-19
lines changed

6 files changed

+62
-19
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ script:
1515
- bundle exec rake ci:build
1616
- make -B carthage
1717
- make -B docs
18+
after_script:
19+
- sh scripts/update-docs.sh
1820
notifications:
1921
email: false
2022
slack:

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
## v1.4.0
2+
3+
* Added delegate methods:
4+
5+
```swift
6+
@objc optional func tokenField(_ tokenField: ICTokenField, didChangeInputText text: String)
7+
@objc optional func tokenField(_ tokenField: ICTokenField, shouldCompleteText text: String) -> Bool
8+
```
9+
10+
* Changed delegate method:
11+
12+
```swift
13+
@objc optional func tokenField(_ tokenField: ICTokenField, didCompleteText text: String)
14+
```
15+
116
## v1.3.0
217

318
* Swift 3.0

Example/CustomizedTokenViewController.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,22 @@ class CustomizedTokenViewController: UIViewController, ICTokenFieldDelegate {
8383
print(#function)
8484
}
8585

86-
func tokenField(_ tokenField: ICTokenField, didEnterText text: String) {
87-
print("Add: \"\(text)\"")
86+
func tokenField(_ tokenField: ICTokenField, didChangeInputText text: String) {
87+
print("Typing \"\(text)\"")
88+
}
89+
90+
func tokenField(_ tokenField: ICTokenField, shouldCompleteText text: String) -> Bool {
91+
print("Should add \"\(text)\"?")
92+
return text != "42"
93+
}
94+
95+
func tokenField(_ tokenField: ICTokenField, didCompleteText text: String) {
96+
print("Added \"\(text)\"")
8897
updateTexts()
8998
}
9099

91100
func tokenField(_ tokenField: ICTokenField, didDeleteText text: String, atIndex index: Int) {
92-
print("Delete: \"\(text)\"")
101+
print("Deleted \"\(text)\"")
93102
updateTexts()
94103
}
95104

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ See `Example/CustomizedTokenField.swift` for more details.
135135
* `tokenFieldDidBeginEditing(_:)`
136136
* `tokenFieldDidEndEditing(_:)`
137137
* `tokenFieldWillReturn(_:)`
138-
* `tokenField(_:didEnterText:)`
138+
* `tokenField(_:didChangeInputText:)`
139+
* `tokenField(_:shouldCompleteText:)`
140+
* `tokenField(_:didCompleteText:)`
139141
* `tokenField(_:didDeleteText:atIndex:)`
140142

141143
## Development

Source/TokenField/ICTokenField.swift

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,12 @@ import UIKit
3434
@objc optional func tokenFieldDidEndEditing(_ tokenField: ICTokenField)
3535
/// Tells the delegate that the token field will process the pressing of the return button.
3636
@objc optional func tokenFieldWillReturn(_ tokenField: ICTokenField)
37+
/// Tells the delegate the input text is changed.
38+
@objc optional func tokenField(_ tokenField: ICTokenField, didChangeInputText text: String)
39+
/// Asks the delegate if the text should become a token in the token field.
40+
@objc optional func tokenField(_ tokenField: ICTokenField, shouldCompleteText text: String) -> Bool
3741
/// Tells the delegate that the text becomes a token in the token field.
38-
@objc optional func tokenField(_ tokenField: ICTokenField, didEnterText text: String)
42+
@objc optional func tokenField(_ tokenField: ICTokenField, didCompleteText text: String)
3943
/// Tells the delegate that the token at certain index is removed from the token field.
4044
@objc optional func tokenField(_ tokenField: ICTokenField, didDeleteText text: String, atIndex index: Int)
4145
}
@@ -287,23 +291,28 @@ open class ICTokenField: UIView, UITextFieldDelegate, ICBackspaceTextFieldDelega
287291
}
288292

289293
let text = (input as NSString).replacingCharacters(in: range, with: string)
294+
delegate?.tokenField?(self, didChangeInputText: text)
290295

291296
for delimiter in delimiters {
292-
if text.hasSuffix(delimiter) {
293-
let index = text.index(text.endIndex, offsetBy: -delimiter.characters.count)
294-
let newToken = text.substring(to: index)
295-
textField.text = nil
296-
297-
if !newToken.isEmpty && newToken != delimiter {
298-
tokens.append(ICToken(text: newToken, normalAttributes: normalTokenAttributes, highlightedAttributes: highlightedTokenAttributes))
299-
layoutTokenTextField()
300-
delegate?.tokenField?(self, didEnterText: newToken)
301-
}
302-
togglePlaceholderIfNeeded()
297+
guard text.hasSuffix(delimiter) else {
298+
continue
299+
}
300+
301+
let index = text.index(text.endIndex, offsetBy: -delimiter.characters.count)
302+
let newToken = text.substring(to: index)
303303

304-
return false
304+
if !newToken.isEmpty && newToken != delimiter && (delegate?.tokenField?(self, shouldCompleteText: newToken) ?? true) {
305+
tokens.append(ICToken(text: newToken, normalAttributes: normalTokenAttributes, highlightedAttributes: highlightedTokenAttributes))
306+
layoutTokenTextField()
307+
delegate?.tokenField?(self, didCompleteText: newToken)
305308
}
309+
310+
textField.text = nil
311+
togglePlaceholderIfNeeded()
312+
313+
return false
306314
}
315+
307316
return true
308317
}
309318

@@ -436,10 +445,16 @@ open class ICTokenField: UIView, UITextFieldDelegate, ICBackspaceTextFieldDelega
436445
guard let text = inputTextField.text, !text.isEmpty else {
437446
return
438447
}
448+
449+
let shouldCompleteText = delegate?.tokenField?(self, shouldCompleteText: text) ?? true
450+
guard shouldCompleteText else {
451+
return
452+
}
453+
439454
inputTextField.text = nil
440455
tokens.append(ICToken(text: text, normalAttributes: normalTokenAttributes, highlightedAttributes: highlightedTokenAttributes))
441456
layoutTokenTextField()
442-
delegate?.tokenField?(self, didEnterText: text)
457+
delegate?.tokenField?(self, didCompleteText: text)
443458
}
444459

445460
/// Removes the input text and all displayed tokens.

scripts/update-docs.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ git --no-pager diff --stat
1717
git add .
1818
git commit -m "[CI] Update documentation at $(date +'%Y-%m-%d %H:%M:%S %z')"
1919

20-
if [ "${TRAVIS_BRANCH}" = "master" ] && [ -n "$DANGER_GITHUB_API_TOKEN" ]; then
20+
if [ "${TRAVIS_BRANCH}" = "develop" ] && [ -n "$DANGER_GITHUB_API_TOKEN" ]; then
2121
echo "Updating gh-pages..."
2222
git remote add upstream "https://${DANGER_GITHUB_API_TOKEN}@github.com/polydice/ICInputAccessory.git"
2323
git push --quiet upstream HEAD:gh-pages

0 commit comments

Comments
 (0)