Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

With iOS 15 - the selected border and color don't seem to be working #140

Open
jfbomber opened this issue Sep 23, 2021 · 19 comments
Open

With iOS 15 - the selected border and color don't seem to be working #140

jfbomber opened this issue Sep 23, 2021 · 19 comments

Comments

@jfbomber
Copy link

jfbomber commented Sep 23, 2021

The selected color doesn't seem to be working in iOS 15.
`
self.calendarView = CalendarView()

    self.calendarView.backgroundColor = UIColor.white  
  
    self.calendarView.delegate = self

    self.calendarView.dataSource = self

    self.calendarView.direction = .horizontal

    self.calendarView.multipleSelectionEnable = false

    self.calendarView.setDisplayDate(Date())

    self.calendarView.marksWeekends = false

    self.calendarView.style.cellSelectedBorderColor = .red

    self.calendarView.style.cellSelectedColor = .green

    self.calendarView.style.cellSelectedTextColor = .green

`

@jibrank
Copy link

jibrank commented Sep 27, 2021

i'am facing the same issue the style part of calendar is not working.

  let style = CalendarView.Style()

    style.cellShape                = .round
    style.cellColorDefault         = UIColor.clear
    style.cellTextColorDefault     = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
    
    style.cellColorToday           = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    style.cellTextColorToday       = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
    

    
    style.headerTextColor          = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
    style.headerBackgroundColor    = UIColor.white
    
    
    style.cellEventColor           = UIColor.clear
    
    
    style.cellTextColorWeekend     = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
    style.firstWeekday             = .sunday
    style.weekdaysBackgroundColor  = UIColor.white
    style.cellColorOutOfRange      = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
    
    

    style.cellSelectedBorderColor = UIColor(red: 193.0/255.0, green: 165.0/255.0, blue: 139.0/255.0, alpha: 1.0);
    style.cellSelectedColor = UIColor(red: 193.0/255.0, green: 165.0/255.0, blue: 139.0/255.0, alpha: 1.0);
    style.cellSelectedTextColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    style.cellSelectedBorderWidth = 1.0

@jfbomber
Copy link
Author

jfbomber commented Oct 7, 2021

@jibrank Have you had any luck updating it?

I have tried editing the project code but it seems to be something with the update of the UICollectionView on iOS 15.

@zkhCreator
Copy link

@jfbomber I find the problem.
In apple's document, they said:

You typically do not set the value of this property directly. Changing the value of this property programmatically does not change the appearance of the cell. The preferred way to select the cell and highlight it is to use the selection methods of the collection view object.

and in Calender, it called cell.isSelected and force reload the collectoinView.

It makes UICollectionView didn't show the style of the cell.
If you want to fix it, you can change these things. Like disable selectionStyle and create a new method for cell to update style.
And if you want to use multiSelection, you can set the collectionView's multiSelection property.

@zkhCreator
Copy link

@jfbomber You can see the fix code in zkhCreator#1

@nik6018
Copy link

nik6018 commented Oct 18, 2021

@zkhCreator I integrated your code, still it's not showing Selected Cells Border :( .

@jfbomber
Copy link
Author

@nik6018 It did work for me. I just used his forked version of the branch
pod 'KDCalendar', :git => 'https://github.com/zkhCreator/CalendarView'

@nik6018
Copy link

nik6018 commented Oct 19, 2021

@jfbomber Thanks for informing. @zkhCreator Can you please confirm if any more changes are needed to be included other than the commit mentioned in the above comment ?

@zkhCreator
Copy link

zkhCreator commented Oct 27, 2021

@nik6018 the border color is ok in my repo.
Maybe you should use the master branch, don't copy the merge request code, because I fix some bug not in the merge request.
here is the screenshoot.
IMG_7568 2

@khedheri
Copy link

@zkhCreator seems like you correct the issue , but you forget to upgrade the s.version in "KDCalendar.podspec", so when users try to update pods, cocoapods can't recognise that a new version is available.
upgrade the version number "KDCalendar.podspec", then users can update the pod

@zkhCreator
Copy link

@khedheri you can use my repo's master branch, because of my repo is not the main repo of Calendar repo.If I update the podspec, it will influence the version of main repo

@nik6018
Copy link

nik6018 commented Dec 16, 2021

EDIT :

After further inspection it seems like if I make the allowSelection property on CalendarView false programmatic selection doesn't work (it used to work on pre-iOS15).
My requirement is a bit unusual as in I want programmatic selection but disable selection via user input :(
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

@zkhCreator I tried by downloading your master branch but still I am not getting the result I want :(

If I wasn't clear I am trying to select the date programmatically using calendarView.selectDate(_:) method and want to display a border around the selected cell.

Selecting the dates by directly tapping on the Calendar View is working as expected, but in my case I only want to select the dates programmatically.

While checking the class CalendarDayCell the isSelected computed property contains the following lines

    switch isSelected {
            case true:
                self.bgView.layer.borderColor = style.cellSelectedBorderColor.cgColor
                self.bgView.layer.borderWidth = style.cellSelectedBorderWidth
                self.bgView.backgroundColor =  style.cellSelectedColor

The color & border color applied on the bgView doesn't show for some reason, if dates are selected programmatically.

But If I copy the above 3 lines and put them in the updateTextColors() method inside the isSelected if condition, then selected cell border color shows properly like before iOS 15.

Any idea why this is the case ?

@lygon55555
Copy link

@zkhCreator thank you so much for fixing the code👍

@jibrank
Copy link

jibrank commented Jan 17, 2022

@zkhCreator i used your code but few things are not working as it was working before

  1. i can select out of range dates
  2. Programatically dates cant be selected.
    Simulator Screen Shot - iPhone 13 Pro - 2022-01-17 at 19 22 39

@jibrank
Copy link

jibrank commented Jan 17, 2022

@nik6018 you can use this, it has same functionalities
https://github.com/WenchaoD/FSCalendar

@prapawity
Copy link

iOS 15.3 issue was solved, but why, iOS 15.3 just security update

@Agisight
Copy link

Agisight commented Dec 8, 2022

https://stackoverflow.com/a/31387259

Here is the solution:
Снимок экрана 2022-12-08 в 17 17 27

        dayCell.isSelected = selectedIndexPaths.contains(indexPath)
        if dayCell.isSelected {
            collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally)
        }

@mmick66

@mmick66
Copy link
Owner

mmick66 commented Dec 8, 2022

Please write a RP. Thank you.

@Agisight
Copy link

Agisight commented Dec 8, 2022

@mmick66
I see a new working PR which fixed the issue. So you can choose which one is better. I vote for andygeers/ios15 version. So, do you still need my PR?

Merge pull request #143 from andygeers/ios15 2e677a0 Michael Michailidis [email protected] 7 дек. 2022 г., 16:45

@Agisight
Copy link

Agisight commented Dec 9, 2022

#145

Here is a PR with my lines above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants