Skip to content

Commit

Permalink
Enable backwards compatibility when compiling with Xcode 14 (#329)
Browse files Browse the repository at this point in the history
* Enable backwards compatibility when compiling with Xcode 14

This will still mean that the bug addressed in #314 will persist, but will allow consumers bound to older Xcode versions to continue to update the rest of the codebase and its dependencies

* Add end-of-file new lines

* Safe-guard usage as well
  • Loading branch information
eliperkins committed Nov 30, 2023
1 parent 64aecb2 commit 688fa07
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Sources/Runestone/Library/UITextInput+Helpers.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import UIKit

#if compiler(>=5.9)

@available(iOS 17, *)
extension UITextInput where Self: NSObject {
var sbs_textSelectionDisplayInteraction: UITextSelectionDisplayInteraction? {
Expand All @@ -17,3 +19,5 @@ extension UITextInput where Self: NSObject {
return interactionAssistant.value(forKey: selectionViewManagerKey) as? UITextSelectionDisplayInteraction
}
}

#endif
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import UIKit

#if compiler(>=5.9)

@available(iOS 17, *)
extension UITextSelectionDisplayInteraction {
func sbs_enableCursorBlinks() {
setValue(true, forKey: "rosruc".reversed() + "Blinks")
}
}

#endif
4 changes: 4 additions & 0 deletions Sources/Runestone/TextView/Core/TextView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1234,10 +1234,12 @@ private extension TextView {
isInputAccessoryViewEnabled = true
textInputView.removeInteraction(nonEditableTextInteraction)
textInputView.addInteraction(editableTextInteraction)
#if compiler(>=5.9)
if #available(iOS 17, *) {
// Workaround a bug where the caret does not appear until the user taps again on iOS 17 (FB12622609).
textInputView.sbs_textSelectionDisplayInteraction?.isActivated = true
}
#endif
}
}

Expand Down Expand Up @@ -1390,10 +1392,12 @@ extension TextView: TextInputViewDelegate {
if !view.viewHierarchyContainsCaret && self.editableTextInteraction.view != nil {
view.removeInteraction(self.editableTextInteraction)
view.addInteraction(self.editableTextInteraction)
#if compiler(>=5.9)
if #available(iOS 17, *) {
self.textInputView.sbs_textSelectionDisplayInteraction?.isActivated = true
self.textInputView.sbs_textSelectionDisplayInteraction?.sbs_enableCursorBlinks()
}
#endif
}
}
}
Expand Down

0 comments on commit 688fa07

Please sign in to comment.