beeware / beeware/rubicon-objc

Instance properties defined by protocol on superclass are not autodiscovered

Open
#96 1 comment 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.