beeware / beeware/rubicon-objc
Instance properties defined by protocol on superclass are not autodiscovered
- Dominant language
- Python
- Stars
- 301
- Forks
- 70
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 18
Description
On iOS, `UITextField` defines a `keyboardType` property. However, this property doesn't appear to get picked up by Rubicon.
Other properties (like `borderStyle`) work fine.
If you manually invoke `send_message(obj, 'setKeyboardType:', ...)`, it works, too.
So - there's evidently something about the property discovery process.
A little digging revealed that the `keyboardType()` and `setKeyboardType()` accessor and mutator aren't found by `cache_property_methods()`. This may be due to the fact that they're defined on the `UITextInputTraits` protocol, rather than on a direct superclass of `UITextField`.
Contributor guide
Research direction
Read cache_property_methods and compare how UITextField and the UITextInputTraits protocol are handled; reproduce the difference between keyboardType and borderStyle. Done means protocol-defined keyboardType accessors are autodiscovered while existing property discovery continues to work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, objective-c, python
- Domain
- mobile-dev, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100